]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
cleanup: Port GObject classes to JS6 classes
authorFlorian Müllner <fmuellner@gnome.org>
Tue, 31 Oct 2017 01:23:39 +0000 (02:23 +0100)
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Fri, 25 Jan 2019 14:02:44 +0000 (14:02 +0000)
GJS added API for defining GObject classes with ES6 class syntax
last cycle, use it to port the remaining Lang.Class classes to
the new syntax.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/361

43 files changed:
js/extensionPrefs/main.js
js/gdm/loginDialog.js
js/misc/inputMethod.js
js/misc/systemActions.js
js/misc/util.js
js/portalHelper/main.js
js/ui/altTab.js
js/ui/appDisplay.js
js/ui/boxpointer.js
js/ui/closeDialog.js
js/ui/components/telepathyClient.js
js/ui/dash.js
js/ui/dateMenu.js
js/ui/dialog.js
js/ui/edgeDragAction.js
js/ui/iconGrid.js
js/ui/inhibitShortcutsDialog.js
js/ui/kbdA11yDialog.js
js/ui/keyboard.js
js/ui/layout.js
js/ui/lightbox.js
js/ui/lookingGlass.js
js/ui/messageList.js
js/ui/messageTray.js
js/ui/osdWindow.js
js/ui/overviewControls.js
js/ui/padOsd.js
js/ui/panel.js
js/ui/panelMenu.js
js/ui/screenShield.js
js/ui/search.js
js/ui/status/accessibility.js
js/ui/status/keyboard.js
js/ui/switchMonitor.js
js/ui/switcherPopup.js
js/ui/userWidget.js
js/ui/viewSelector.js
js/ui/windowManager.js
js/ui/workspace.js
js/ui/workspaceSwitcherPopup.js
js/ui/workspaceThumbnail.js
js/ui/workspacesView.js
tests/interactive/scroll-view-sizing.js

index e6b1a6eb7636e2711d72c90d33ec7aced32fb6db..c3a27085abe9c5b08e358b2de633596b423174d4 100644 (file)
@@ -1,4 +1,3 @@
-const Lang = imports.lang;
 const Gettext = imports.gettext;
 const GLib = imports.gi.GLib;
 const GObject = imports.gi.GObject;
@@ -240,24 +239,20 @@ var Application = class {
     }
 };
 
-var DescriptionLabel = new Lang.Class({
-    Name: 'DescriptionLabel',
-    Extends: Gtk.Label,
-
+var DescriptionLabel = GObject.registerClass(
+class DescriptionLabel extends Gtk.Label {
     vfunc_get_preferred_height_for_width(width) {
         // Hack: Request the maximum height allowed by the line limit
         if (this.lines > 0)
-            return this.parent(0);
-        return this.parent(width);
+            return super.vfunc_get_preferred_height_for_width(0);
+        return super.vfunc_get_preferred_height_for_width(width);
     }
 });
 
-var ExtensionRow = new Lang.Class({
-    Name: 'ExtensionRow',
-    Extends: Gtk.ListBoxRow,
-
+var ExtensionRow = GObject.registerClass(
+class ExtensionRow extends Gtk.ListBoxRow {
     _init(uuid) {
-        this.parent();
+        super._init();
 
         this.uuid = uuid;
 
@@ -275,7 +270,7 @@ var ExtensionRow = new Lang.Class({
             });
 
         this._buildUI();
-    },
+    }
 
     _buildUI() {
         let extension = ExtensionUtils.extensions[this.uuid];
@@ -322,7 +317,7 @@ var ExtensionRow = new Lang.Class({
         });
         this._switch.connect('state-set', () => true);
         hbox.add(this._switch);
-    },
+    }
 
     _canEnable() {
         let extension = ExtensionUtils.extensions[this.uuid];
@@ -330,12 +325,12 @@ var ExtensionRow = new Lang.Class({
 
         return !this._settings.get_boolean('disable-user-extensions') &&
                !(checkVersion && ExtensionUtils.isOutOfDate(extension));
-    },
+    }
 
     _isEnabled() {
         let extensions = this._settings.get_strv('enabled-extensions');
         return extensions.indexOf(this.uuid) != -1;
-    },
+    }
 
     _enable() {
         let extensions = this._settings.get_strv('enabled-extensions');
@@ -344,7 +339,7 @@ var ExtensionRow = new Lang.Class({
 
         extensions.push(this.uuid);
         this._settings.set_strv('enabled-extensions', extensions);
-    },
+    }
 
     _disable() {
         let extensions = this._settings.get_strv('enabled-extensions');
index 252caa24d9021288d8c2d18fa27832a93d953bdc..a22f55e595f3a75bd49c343802a43e2caf9aca77 100644 (file)
@@ -24,7 +24,6 @@ const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
 const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const Pango = imports.gi.Pango;
 const Shell = imports.gi.Shell;
@@ -400,13 +399,11 @@ var SessionMenuButton = class {
 };
 Signals.addSignalMethods(SessionMenuButton.prototype);
 
-var LoginDialog = new Lang.Class({
-    Name: 'LoginDialog',
-    Extends: St.Widget,
+var LoginDialog = GObject.registerClass({
     Signals: { 'failed': {} },
-
+}, class LoginDialog extends St.Widget {
     _init(parentActor) {
-        this.parent({ style_class: 'login-dialog',
+        super._init({ style_class: 'login-dialog',
                       visible: false });
 
         this.get_accessible().set_role(Atk.Role.WINDOW);
@@ -524,7 +521,7 @@ var LoginDialog = new Lang.Class({
         // focus later
         this._startupCompleteId = Main.layoutManager.connect('startup-complete',
                                                              this._updateDisableUserList.bind(this));
-    },
+    }
 
     _getBannerAllocation(dialogBox) {
         let actorBox = new Clutter.ActorBox();
@@ -538,7 +535,7 @@ var LoginDialog = new Lang.Class({
         actorBox.y2 = actorBox.y1 + natHeight;
 
         return actorBox;
-    },
+    }
 
     _getLogoBinAllocation(dialogBox) {
         let actorBox = new Clutter.ActorBox();
@@ -552,7 +549,7 @@ var LoginDialog = new Lang.Class({
         actorBox.y2 = actorBox.y1 + natHeight;
 
         return actorBox;
-    },
+    }
 
     _getCenterActorAllocation(dialogBox, actor) {
         let actorBox = new Clutter.ActorBox();
@@ -570,7 +567,7 @@ var LoginDialog = new Lang.Class({
         actorBox.y2 = actorBox.y1 + natHeight;
 
         return actorBox;
-    },
+    }
 
     vfunc_allocate(dialogBox, flags) {
         this.set_allocation(dialogBox, flags);
@@ -713,7 +710,7 @@ var LoginDialog = new Lang.Class({
 
         if (logoAllocation)
             this._logoBin.allocate(logoAllocation, flags);
-    },
+    }
 
     _ensureUserListLoaded() {
         if (!this._userManager.is_loaded) {
@@ -729,7 +726,7 @@ var LoginDialog = new Lang.Class({
             let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._loadUserList.bind(this));
             GLib.Source.set_name_by_id(id, '[gnome-shell] _loadUserList');
         }
-    },
+    }
 
     _updateDisableUserList() {
         let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY);
@@ -744,7 +741,7 @@ var LoginDialog = new Lang.Class({
             if (this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
                 this._authPrompt.reset();
         }
-    },
+    }
 
     _updateCancelButton() {
         let cancelVisible;
@@ -757,7 +754,7 @@ var LoginDialog = new Lang.Class({
             cancelVisible = true;
 
         this._authPrompt.cancelButton.visible = cancelVisible;
-    },
+    }
 
     _updateBanner() {
         let enabled = this._settings.get_boolean(GdmUtil.BANNER_MESSAGE_KEY);
@@ -769,7 +766,7 @@ var LoginDialog = new Lang.Class({
         } else {
             this._bannerLabel.hide();
         }
-    },
+    }
 
     _fadeInBannerView() {
         this._bannerView.show();
@@ -777,13 +774,13 @@ var LoginDialog = new Lang.Class({
                          { opacity: 255,
                            time: _FADE_ANIMATION_TIME,
                            transition: 'easeOutQuad' });
-    },
+    }
 
     _hideBannerView() {
         Tweener.removeTweens(this._bannerView);
         this._bannerView.opacity = 0;
         this._bannerView.hide();
-    },
+    }
 
     _updateLogoTexture(cache, file) {
         if (this._logoFile && !this._logoFile.equal(file))
@@ -796,14 +793,14 @@ var LoginDialog = new Lang.Class({
                                                                        -1, _LOGO_ICON_HEIGHT,
                                                                        scaleFactor));
         }
-    },
+    }
 
     _updateLogo() {
         let path = this._settings.get_string(GdmUtil.LOGO_KEY);
 
         this._logoFile = path ? Gio.file_new_for_path(path) : null;
         this._updateLogoTexture(this._textureCache, this._logoFile);
-    },
+    }
 
     _onPrompted() {
         if (this._shouldShowSessionMenuButton()) {
@@ -813,7 +810,7 @@ var LoginDialog = new Lang.Class({
             this._sessionMenuButton.updateSensitivity(false);
         }
         this._showPrompt();
-    },
+    }
 
     _resetGreeterProxy() {
         if (GLib.getenv('GDM_GREETER_TEST') != '1') {
@@ -829,7 +826,7 @@ var LoginDialog = new Lang.Class({
             this._timedLoginRequestedId = this._greeter.connect('timed-login-requested',
                                                                 this._onTimedLoginRequested.bind(this));
         }
-    },
+    }
 
     _onReset(authPrompt, beginRequest) {
         this._resetGreeterProxy();
@@ -850,11 +847,11 @@ var LoginDialog = new Lang.Class({
         } else {
             this._hideUserListAndBeginVerification();
         }
-    },
+    }
 
     _onDefaultSessionChanged(client, sessionId) {
         this._sessionMenuButton.setActiveSession(sessionId);
-    },
+    }
 
     _shouldShowSessionMenuButton() {
         if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFYING &&
@@ -865,7 +862,7 @@ var LoginDialog = new Lang.Class({
           return false;
 
         return true;
-    },
+    }
 
     _showPrompt() {
         if (this._authPrompt.actor.visible)
@@ -877,7 +874,7 @@ var LoginDialog = new Lang.Class({
                            time: _FADE_ANIMATION_TIME,
                            transition: 'easeOutQuad' });
         this._fadeInBannerView();
-    },
+    }
 
     _showRealmLoginHint(realmManager, hint) {
         if (!hint)
@@ -890,7 +887,7 @@ var LoginDialog = new Lang.Class({
         // Translators: this message is shown below the username entry field
         // to clue the user in on how to login to the local network realm
         this._authPrompt.setMessage(_("(e.g., user or %s)").format(hint), GdmUtil.MessageType.HINT);
-    },
+    }
 
     _askForUsernameAndBeginVerification() {
         this._authPrompt.setPasswordChar('');
@@ -917,7 +914,7 @@ var LoginDialog = new Lang.Class({
         this._sessionMenuButton.updateSensitivity(false);
         this._authPrompt.updateSensitivity(true);
         this._showPrompt();
-    },
+    }
 
     _loginScreenSessionActivated() {
         if (this.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
@@ -941,7 +938,7 @@ var LoginDialog = new Lang.Class({
                                    this._authPrompt.reset();
                            },
                            onCompleteScope: this });
-    },
+    }
 
     _gotGreeterSessionProxy(proxy) {
         this._greeterSessionProxy = proxy;
@@ -950,7 +947,7 @@ var LoginDialog = new Lang.Class({
                 if (proxy.Active)
                     this._loginScreenSessionActivated();
             });
-    },
+    }
 
     _startSession(serviceName) {
         Tweener.addTween(this,
@@ -970,11 +967,11 @@ var LoginDialog = new Lang.Class({
                                this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
                            },
                            onCompleteScope: this });
-    },
+    }
 
     _onSessionOpened(client, serviceName) {
         this._authPrompt.finish(() => { this._startSession(serviceName); });
-    },
+    }
 
     _waitForItemForUser(userName) {
         let item = this._userList.getItemFromUserName(userName);
@@ -994,7 +991,7 @@ var LoginDialog = new Lang.Class({
         hold.connect('release', () => { this._userList.disconnect(signalId); });
 
         return hold;
-    },
+    }
 
     _blockTimedLoginUntilIdle() {
         let hold = new Batch.Hold();
@@ -1007,7 +1004,7 @@ var LoginDialog = new Lang.Class({
             });
         GLib.Source.set_name_by_id(this._timedLoginIdleTimeOutId, '[gnome-shell] this._timedLoginIdleTimeOutId');
         return hold;
-    },
+    }
 
     _startTimedLogin(userName, delay) {
         let firstRun = true;
@@ -1080,7 +1077,7 @@ var LoginDialog = new Lang.Class({
         this._timedLoginBatch = new Batch.ConsecutiveBatch(this, tasks);
 
         return this._timedLoginBatch.run();
-    },
+    }
 
     _onTimedLoginRequested(client, userName, seconds) {
         if (this._timedLoginBatch)
@@ -1097,28 +1094,28 @@ var LoginDialog = new Lang.Class({
 
            return Clutter.EVENT_PROPAGATE;
         });
-    },
+    }
 
     _setUserListExpanded(expanded) {
         this._userList.updateStyle(expanded);
         this._userSelectionBox.visible = expanded;
-    },
+    }
 
     _hideUserList() {
         this._setUserListExpanded(false);
         if (this._userSelectionBox.visible)
             GdmUtil.cloneAndFadeOutActor(this._userSelectionBox);
-    },
+    }
 
     _hideUserListAskForUsernameAndBeginVerification() {
         this._hideUserList();
         this._askForUsernameAndBeginVerification();
-    },
+    }
 
     _hideUserListAndBeginVerification() {
         this._hideUserList();
         this._authPrompt.begin();
-    },
+    }
 
     _showUserList() {
         this._ensureUserListLoaded();
@@ -1128,7 +1125,7 @@ var LoginDialog = new Lang.Class({
         this._setUserListExpanded(true);
         this._notListedButton.show();
         this._userList.actor.grab_key_focus();
-    },
+    }
 
     _beginVerificationForItem(item) {
         this._authPrompt.setUser(item.user);
@@ -1139,7 +1136,7 @@ var LoginDialog = new Lang.Class({
         this._authPrompt.begin({ userName: userName,
                                  hold: hold });
         return hold;
-    },
+    }
 
     _onUserListActivated(activatedItem) {
         this._user = activatedItem.user;
@@ -1149,7 +1146,7 @@ var LoginDialog = new Lang.Class({
         let batch = new Batch.ConcurrentBatch(this, [GdmUtil.cloneAndFadeOutActor(this._userSelectionBox),
                                                      this._beginVerificationForItem(activatedItem)]);
         batch.run();
-    },
+    }
 
     _onDestroy() {
         if (this._userManagerLoadedId) {
@@ -1190,7 +1187,7 @@ var LoginDialog = new Lang.Class({
             this._realmManager.release();
             this._realmManager = null;
         }
-    },
+    }
 
     _loadUserList() {
         if (this._userListLoaded)
@@ -1228,7 +1225,7 @@ var LoginDialog = new Lang.Class({
             });
 
         return GLib.SOURCE_REMOVE;
-    },
+    }
 
     open() {
         Main.ctrlAltTabManager.addGroup(this,
@@ -1247,22 +1244,22 @@ var LoginDialog = new Lang.Class({
                            transition: 'easeInQuad' });
 
         return true;
-    },
+    }
 
     close() {
         Main.popModal(this);
         Main.ctrlAltTabManager.removeGroup(this);
-    },
+    }
 
     cancel() {
         this._authPrompt.cancel();
-    },
+    }
 
     addCharacter(unichar) {
         // Don't allow type ahead at the login screen
-    },
+    }
 
     finish(onComplete) {
         this._authPrompt.finish(onComplete);
-    },
+    }
 });
index 98761a63d9edc84b91895c19e81fb31fd81f0ec8..4788a6d9e4278bda36db886279ab0b99682e6ae4 100644 (file)
@@ -1,16 +1,14 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 const Clutter = imports.gi.Clutter;
+const GObject = imports.gi.GObject;
 const IBus = imports.gi.IBus;
 const Keyboard = imports.ui.status.keyboard;
-const Lang = imports.lang;
 const Signals = imports.signals;
 
-var InputMethod = new Lang.Class({
-    Name: 'InputMethod',
-    Extends: Clutter.InputMethod,
-
+var InputMethod = GObject.registerClass(
+class InputMethod extends Clutter.InputMethod {
     _init() {
-        this.parent();
+        super._init();
         this._hints = 0;
         this._purpose = 0;
         this._currentFocus = null;
@@ -29,11 +27,11 @@ var InputMethod = new Lang.Class({
 
         if (this._ibus.is_connected())
             this._onConnected();
-    },
+    }
 
     get currentFocus() {
         return this._currentFocus;
-    },
+    }
 
     _updateCapabilities() {
         let caps = 0;
@@ -48,16 +46,16 @@ var InputMethod = new Lang.Class({
 
         if (this._context)
             this._context.set_capabilities(caps);
-    },
+    }
 
     _onSourceChanged() {
         this._currentSource = this._inputSourceManager.currentSource;
-    },
+    }
 
     _onConnected() {
         this._ibus.create_input_context_async ('gnome-shell', -1, null,
                                                this._setContext.bind(this));
-    },
+    }
 
     _setContext(bus, res) {
         this._context = this._ibus.create_input_context_async_finish(res);
@@ -69,7 +67,7 @@ var InputMethod = new Lang.Class({
         this._context.connect('forward-key-event', this._onForwardKeyEvent.bind(this));
 
         this._updateCapabilities();
-    },
+    }
 
     _clear() {
         this._context = null;
@@ -78,20 +76,20 @@ var InputMethod = new Lang.Class({
         this._preeditStr = ''
         this._preeditPos = 0;
         this._preeditVisible = false;
-    },
+    }
 
     _emitRequestSurrounding() {
         if (this._context.needs_surrounding_text())
             this.emit('request-surrounding');
-    },
+    }
 
     _onCommitText(context, text) {
         this.commit(text.get_text());
-    },
+    }
 
     _onDeleteSurroundingText(context) {
         this.delete_surrounding();
-    },
+    }
 
     _onUpdatePreeditText(context, text, pos, visible) {
         if (text == null)
@@ -107,17 +105,17 @@ var InputMethod = new Lang.Class({
         this._preeditStr = preedit;
         this._preeditPos = pos;
         this._preeditVisible = visible;
-    },
+    }
 
     _onShowPreeditText(context) {
         this._preeditVisible = true;
         this.set_preedit_text(this._preeditStr, this._preeditPos);
-    },
+    }
 
     _onHidePreeditText(context) {
         this.set_preedit_text(null, this._preeditPos);
         this._preeditVisible = false;
-    },
+    }
 
     _onForwardKeyEvent(context, keyval, keycode, state) {
         let press = (state & IBus.ModifierType.RELEASE_MASK) == 0;
@@ -131,7 +129,7 @@ var InputMethod = new Lang.Class({
             time = global.display.get_current_time_roundtrip();
 
         this.forward_key(keyval, keycode + 8, state & Clutter.ModifierType.MODIFIER_MASK, time, press);
-    },
+    }
 
     vfunc_focus_in(focus) {
         this._currentFocus = focus;
@@ -140,7 +138,7 @@ var InputMethod = new Lang.Class({
             this._updateCapabilities();
             this._emitRequestSurrounding();
         }
-    },
+    }
 
     vfunc_focus_out() {
         this._currentFocus = null;
@@ -154,7 +152,7 @@ var InputMethod = new Lang.Class({
             this.set_preedit_text(null, 0);
             this._preeditStr = null;
         }
-    },
+    }
 
     vfunc_reset() {
         if (this._context) {
@@ -167,7 +165,7 @@ var InputMethod = new Lang.Class({
             this.set_preedit_text(null, 0);
             this._preeditStr = null;
         }
-    },
+    }
 
     vfunc_set_cursor_location(rect) {
         if (this._context) {
@@ -175,7 +173,7 @@ var InputMethod = new Lang.Class({
                                               rect.get_width(), rect.get_height());
             this._emitRequestSurrounding();
         }
-    },
+    }
 
     vfunc_set_surrounding(text, cursor, anchor) {
         if (!this._context || !text)
@@ -183,7 +181,7 @@ var InputMethod = new Lang.Class({
 
         let ibusText = IBus.Text.new_from_string(text);
         this._context.set_surrounding_text(ibusText, cursor, anchor);
-    },
+    }
 
     vfunc_update_content_hints(hints) {
         let ibusHints = 0;
@@ -203,7 +201,7 @@ var InputMethod = new Lang.Class({
         this._hints = ibusHints;
         if (this._context)
             this._context.set_content_type(this._purpose, this._hints);
-    },
+    }
 
     vfunc_update_content_purpose(purpose) {
         let ibusPurpose = 0;
@@ -229,7 +227,7 @@ var InputMethod = new Lang.Class({
         this._purpose = ibusPurpose;
         if (this._context)
             this._context.set_content_type(this._purpose, this._hints);
-    },
+    }
 
     vfunc_filter_key_event(event) {
         if (!this._context)
@@ -256,5 +254,5 @@ var InputMethod = new Lang.Class({
                                                   }
                                               });
         return true;
-    },
+    }
 });
index 3c1713745df14bca68e39d66eecb635f69043bd2..8b2175e04f8d5cddc4d1fd3b080808bada9d8b71 100644 (file)
@@ -3,7 +3,6 @@ const Clutter = imports.gi.Clutter;
 const Gdm = imports.gi.Gdm;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
-const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const GObject = imports.gi.GObject;
 
@@ -44,9 +43,7 @@ function getDefault() {
     return _singleton;
 }
 
-const SystemActions = new Lang.Class({
-    Name: 'SystemActions',
-    Extends: GObject.Object,
+const SystemActions = GObject.registerClass({
     Properties: {
         'can-power-off': GObject.ParamSpec.boolean('can-power-off',
                                                    'can-power-off',
@@ -83,10 +80,10 @@ const SystemActions = new Lang.Class({
                                                           'orientation-lock-icon',
                                                           GObject.ParamFlags.READWRITE,
                                                           null)
-    },
-
+    }
+}, class SystemActions extends GObject.Object {
     _init() {
-        this.parent();
+        super._init();
 
         this._canHavePowerOff = true;
         this._canHaveSuspend = true;
@@ -186,35 +183,35 @@ const SystemActions = new Lang.Class({
 
         Main.sessionMode.connect('updated', () => { this._sessionUpdated(); });
         this._sessionUpdated();
-    },
+    }
 
     get can_power_off() {
         return this._actions.get(POWER_OFF_ACTION_ID).available;
-    },
+    }
 
     get can_suspend() {
         return this._actions.get(SUSPEND_ACTION_ID).available;
-    },
+    }
 
     get can_lock_screen() {
         return this._actions.get(LOCK_SCREEN_ACTION_ID).available;
-    },
+    }
 
     get can_switch_user() {
         return this._actions.get(SWITCH_USER_ACTION_ID).available;
-    },
+    }
 
     get can_logout() {
         return this._actions.get(LOGOUT_ACTION_ID).available;
-    },
+    }
 
     get can_lock_orientation() {
         return this._actions.get(LOCK_ORIENTATION_ACTION_ID).available;
-    },
+    }
 
     get orientation_lock_icon() {
         return this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName;
-    },
+    }
 
     _sensorProxyAppeared() {
         this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH,
@@ -227,7 +224,7 @@ const SystemActions = new Lang.Class({
                                           () => { this._updateOrientationLock(); });
                 this._updateOrientationLock();
             });
-    },
+    }
 
     _updateOrientationLock() {
         let available = false;
@@ -238,7 +235,7 @@ const SystemActions = new Lang.Class({
         this._actions.get(LOCK_ORIENTATION_ACTION_ID).available = available;
 
         this.notify('can-lock-orientation');
-    },
+    }
 
     _updateOrientationLockIcon() {
         let locked = this._orientationSettings.get_boolean('orientation-lock');
@@ -247,14 +244,14 @@ const SystemActions = new Lang.Class({
         this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName = iconName;
 
         this.notify('orientation-lock-icon');
-    },
+    }
 
     _sessionUpdated() {
         this._updateLockScreen();
         this._updatePowerOff();
         this._updateSuspend();
         this._updateMultiUser();
-    },
+    }
 
     forceUpdate() {
         // Whether those actions are available or not depends on both lockdown
@@ -262,7 +259,7 @@ const SystemActions = new Lang.Class({
         // latter, so their value may be outdated; force an update now
         this._updateHaveShutdown();
         this._updateHaveSuspend();
-    },
+    }
 
     getMatchingActions(terms) {
         // terms is a list of strings
@@ -275,15 +272,15 @@ const SystemActions = new Lang.Class({
                 results.push(key);
 
         return results;
-    },
+    }
 
     getName(id) {
         return this._actions.get(id).name;
-    },
+    }
 
     getIconName(id) {
         return this._actions.get(id).iconName;
-    },
+    }
 
     activateAction(id) {
         switch (id) {
@@ -306,14 +303,14 @@ const SystemActions = new Lang.Class({
                 this.activateLockOrientation();
                 break;
         }
-    },
+    }
 
     _updateLockScreen() {
         let showLock = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
         let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
         this._actions.get(LOCK_SCREEN_ACTION_ID).available = showLock && allowLockScreen && LoginManager.canLock();
         this.notify('can-lock-screen');
-    },
+    }
 
     _updateHaveShutdown() {
         this._session.CanShutdownRemote((result, error) => {
@@ -323,7 +320,7 @@ const SystemActions = new Lang.Class({
             this._canHavePowerOff = result[0];
             this._updatePowerOff();
         });
-    },
+    }
 
     _updatePowerOff() {
         let disabled = Main.sessionMode.isLocked ||
@@ -331,7 +328,7 @@ const SystemActions = new Lang.Class({
                         this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
         this._actions.get(POWER_OFF_ACTION_ID).available = this._canHavePowerOff && !disabled;
         this.notify('can-power-off');
-    },
+    }
 
     _updateHaveSuspend() {
         this._loginManager.canSuspend(
@@ -340,7 +337,7 @@ const SystemActions = new Lang.Class({
                 this._suspendNeedsAuth = needsAuth;
                 this._updateSuspend();
             });
-    },
+    }
 
     _updateSuspend() {
         let disabled = (Main.sessionMode.isLocked &&
@@ -349,12 +346,12 @@ const SystemActions = new Lang.Class({
                         this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
         this._actions.get(SUSPEND_ACTION_ID).available = this._canHaveSuspend && !disabled;
         this.notify('can-suspend');
-    },
+    }
 
     _updateMultiUser() {
         this._updateLogout();
         this._updateSwitchUser();
-    },
+    }
 
     _updateSwitchUser() {
         let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
@@ -366,7 +363,7 @@ const SystemActions = new Lang.Class({
         this.notify('can-switch-user');
 
         return visible;
-    },
+    }
 
     _updateLogout() {
         let user = this._userManager.get_user(GLib.get_user_name());
@@ -384,7 +381,7 @@ const SystemActions = new Lang.Class({
         this.notify('can-logout');
 
         return visible;
-    },
+    }
 
     activateLockOrientation() {
         if (!this._actions.get(LOCK_ORIENTATION_ACTION_ID).available)
@@ -392,14 +389,14 @@ const SystemActions = new Lang.Class({
 
         let locked = this._orientationSettings.get_boolean('orientation-lock');
         this._orientationSettings.set_boolean('orientation-lock', !locked);
-    },
+    }
 
     activateLockScreen() {
         if (!this._actions.get(LOCK_SCREEN_ACTION_ID).available)
             throw new Error('The lock-screen action is not available!');
 
         Main.screenShield.lock(true);
-    },
+    }
 
     activateSwitchUser() {
         if (!this._actions.get(SWITCH_USER_ACTION_ID).available)
@@ -412,7 +409,7 @@ const SystemActions = new Lang.Class({
             Gdm.goto_login_session_sync(null);
             return false;
         });
-    },
+    }
 
     activateLogout() {
         if (!this._actions.get(LOGOUT_ACTION_ID).available)
@@ -420,14 +417,14 @@ const SystemActions = new Lang.Class({
 
         Main.overview.hide();
         this._session.LogoutRemote(0);
-    },
+    }
 
     activatePowerOff() {
         if (!this._actions.get(POWER_OFF_ACTION_ID).available)
             throw new Error('The power-off action is not available!');
 
         this._session.ShutdownRemote(0);
-    },
+    }
 
     activateSuspend() {
         if (!this._actions.get(SUSPEND_ACTION_ID).available)
index 25fe3d02e24a46e3e7068188e8509d743c3a2dc5..c5b22dccf2095597d25b62aa24b03fa10bd70536 100644 (file)
@@ -4,7 +4,7 @@ const Clutter = imports.gi.Clutter;
 const Gettext = imports.gettext;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
-const Lang = imports.lang;
+const GObject = imports.gi.GObject;
 const Mainloop = imports.mainloop;
 const Signals = imports.signals;
 const Shell = imports.gi.Shell;
@@ -348,12 +348,10 @@ function insertSorted(array, val, cmp) {
     return pos;
 }
 
-var CloseButton = new Lang.Class({
-    Name: 'CloseButton',
-    Extends: St.Button,
-
+var CloseButton = GObject.registerClass(
+class CloseButton extends St.Button {
     _init(boxpointer) {
-        this.parent({ style_class: 'notification-close'});
+        super._init({ style_class: 'notification-close'});
 
         // This is a bit tricky. St.Bin has its own x-align/y-align properties
         // that compete with Clutter's properties. This should be fixed for
@@ -370,7 +368,7 @@ var CloseButton = new Lang.Class({
         this._boxPointer = boxpointer;
         if (boxpointer)
             this._boxPointer.connect('arrow-side-changed', this._sync.bind(this));
-    },
+    }
 
     _computeBoxPointerOffset() {
         if (!this._boxPointer || !this._boxPointer.actor.get_stage())
@@ -381,7 +379,7 @@ var CloseButton = new Lang.Class({
             return this._boxPointer.getArrowHeight();
         else
             return 0;
-    },
+    }
 
     _sync() {
         let themeNode = this.get_theme_node();
@@ -389,12 +387,12 @@ var CloseButton = new Lang.Class({
         let offY = this._computeBoxPointerOffset();
         this.translation_x = themeNode.get_length('-shell-close-overlap-x')
         this.translation_y = themeNode.get_length('-shell-close-overlap-y') + offY;
-    },
+    }
 
     vfunc_style_changed() {
         this._sync();
-        this.parent();
-    },
+        super.vfunc_style_changed();
+    }
 });
 
 function makeCloseButton(boxpointer) {
index a788b7479eddd29b5a8bca8308b11106cb3b6983..cbc29d056f72360854533942b9fa01c5539b11be 100644 (file)
@@ -4,7 +4,6 @@ const GLib = imports.gi.GLib;
 const GObject = imports.gi.GObject;
 const Gio = imports.gi.Gio;
 const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
 const Pango = imports.gi.Pango;
 const Soup = imports.gi.Soup;
 const WebKit = imports.gi.WebKit2;
@@ -33,12 +32,10 @@ const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC;
 
 const HelperDBusInterface = loadInterfaceXML('org.gnome.Shell.PortalHelper');
 
-var PortalHeaderBar = new Lang.Class({
-    Name: 'PortalHeaderBar',
-    Extends: Gtk.HeaderBar,
-
+var PortalHeaderBar = GObject.registerClass(
+class PortalHeaderBar extends Gtk.HeaderBar {
     _init() {
-        this.parent({ show_close_button: true });
+        super._init({ show_close_button: true });
 
         // See ephy-title-box.c in epiphany for the layout
         let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL,
@@ -73,11 +70,11 @@ var PortalHeaderBar = new Lang.Class({
         hbox.add(this.subtitleLabel);
 
         vbox.show_all();
-    },
+    }
 
     setSubtitle(label) {
         this.subtitleLabel.set_text(label);
-    },
+    }
 
     setSecurityIcon(securityLevel) {
         switch (securityLevel) {
@@ -95,15 +92,13 @@ var PortalHeaderBar = new Lang.Class({
             this._lockImage.set_tooltip_text(_('Your connection to this hotspot login is not secure. Passwords or other information you enter on this page can be viewed by people nearby.'));
             break;
         }
-    },
+    }
 });
 
-var PortalWindow = new Lang.Class({
-    Name: 'PortalWindow',
-    Extends: Gtk.ApplicationWindow,
-
+var PortalWindow = GObject.registerClass(
+class PortalWindow extends Gtk.ApplicationWindow {
     _init(application, url, timestamp, doneCallback) {
-        this.parent({ application: application });
+        super._init({ application: application });
 
         this.connect('delete-event', this.destroyWindow.bind(this));
         this._headerBar = new PortalHeaderBar();
@@ -144,11 +139,11 @@ var PortalWindow = new Lang.Class({
         this.present_with_time(timestamp);
 
         this.application.set_accels_for_action('app.quit', ['<Primary>q', '<Primary>w']);
-    },
+    }
 
     destroyWindow() {
         this.destroy();
-    },
+    }
 
     _syncUri() {
         let uri = this._webView.uri;
@@ -156,12 +151,12 @@ var PortalWindow = new Lang.Class({
             this._headerBar.setSubtitle(GLib.uri_unescape_string(uri, null));
         else
             this._headerBar.setSubtitle('');
-    },
+    }
 
     refresh() {
         this._everSeenRedirect = false;
         this._webView.load_uri(this._originalUrl);
-    },
+    }
 
     vfunc_delete_event(event) {
         if (this._recheckAtExit)
@@ -169,7 +164,7 @@ var PortalWindow = new Lang.Class({
         else
             this._doneCallback(PortalHelperResult.CANCELLED);
         return false;
-    },
+    }
 
     _onLoadChanged(view, loadEvent) {
         if (loadEvent == WebKit.LoadEvent.STARTED) {
@@ -183,11 +178,11 @@ var PortalWindow = new Lang.Class({
             else
                 this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.INSECURE);
         }
-    },
+    }
 
     _onInsecureContentDetected() {
         this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.INSECURE);
-    },
+    }
 
     _onLoadFailedWithTlsErrors(view, failingURI, certificate, errors) {
         this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.INSECURE);
@@ -195,7 +190,7 @@ var PortalWindow = new Lang.Class({
         this._webContext.allow_tls_certificate_for_host(certificate, uri.get_host());
         this._webView.load_uri(failingURI);
         return true;
-    },
+    }
 
     _onDecidePolicy(view, decision, type) {
         if (type == WebKit.PolicyDecisionType.NEW_WINDOW_ACTION) {
@@ -262,15 +257,13 @@ var PortalWindow = new Lang.Class({
 
         decision.use();
         return true;
-    },
+    }
 });
 
-var WebPortalHelper = new Lang.Class({
-    Name: 'WebPortalHelper',
-    Extends: Gtk.Application,
-
+var WebPortalHelper = GObject.registerClass(
+class WebPortalHelper extends Gtk.Application {
     _init() {
-        this.parent({ application_id: 'org.gnome.Shell.PortalHelper',
+        super._init({ application_id: 'org.gnome.Shell.PortalHelper',
                       flags: Gio.ApplicationFlags.IS_SERVICE,
                       inactivity_timeout: 30000 });
 
@@ -280,30 +273,30 @@ var WebPortalHelper = new Lang.Class({
         let action = new Gio.SimpleAction({ name: 'quit' });
         action.connect('activate', () => { this.active_window.destroyWindow(); });
         this.add_action(action);
-    },
+    }
 
     vfunc_dbus_register(connection, path) {
         this._dbusImpl.export(connection, path);
-        this.parent(connection, path);
+        super.vfunc_dbus_register(connection, path);
         return true;
-    },
+    }
 
     vfunc_dbus_unregister(connection, path) {
         this._dbusImpl.unexport_from_connection(connection);
-        this.parent(connection, path);
-    },
+        super.vfunc_dbus_unregister(connection, path);
+    }
 
     vfunc_activate() {
         // If launched manually (for example for testing), force a dummy authentication
         // session with the default url
         this.Authenticate('/org/gnome/dummy', '', 0);
-    },
+    }
 
     Authenticate(connection, url, timestamp) {
         this._queue.push({ connection: connection, url: url, timestamp: timestamp });
 
         this._processQueue();
-    },
+    }
 
     Close(connection) {
         for (let i = 0; i < this._queue.length; i++) {
@@ -318,7 +311,7 @@ var WebPortalHelper = new Lang.Class({
         }
 
         this._processQueue();
-    },
+    }
 
     Refresh(connection) {
         for (let i = 0; i < this._queue.length; i++) {
@@ -330,7 +323,7 @@ var WebPortalHelper = new Lang.Class({
                 break;
             }
         }
-    },
+    }
 
     _processQueue() {
         if (this._queue.length == 0)
@@ -343,7 +336,7 @@ var WebPortalHelper = new Lang.Class({
         top.window = new PortalWindow(this, top.url, top.timestamp, result => {
             this._dbusImpl.emit_signal('Done', new GLib.Variant('(ou)', [top.connection, result]));
         });
-    },
+    }
 });
 
 function initEnvironment() {
index 7544a3d1fb2bad03e308bdd7ce22c74646acd702..d2162f858da127fee42bf27907c4bb2dfbaef976 100644 (file)
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
 const GObject = imports.gi.GObject;
-const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
@@ -59,12 +58,10 @@ function getWindows(workspace) {
     }).filter((w, i, a) => !w.skip_taskbar && a.indexOf(w) == i);
 }
 
-var AppSwitcherPopup = new Lang.Class({
-    Name: 'AppSwitcherPopup',
-    Extends: SwitcherPopup.SwitcherPopup,
-
+var AppSwitcherPopup = GObject.registerClass(
+class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
     _init() {
-        this.parent();
+        super._init();
 
         this._thumbnails = null;
         this._thumbnailTimeoutId = 0;
@@ -79,10 +76,10 @@ var AppSwitcherPopup = new Lang.Class({
 
         this._switcherList = new AppSwitcher(apps, this);
         this._items = this._switcherList.icons;
-    },
+    }
 
     vfunc_allocate(box, flags) {
-        this.parent(box, flags);
+        super.vfunc_allocate(box, flags);
 
         // Allocate the thumbnails
         // We try to avoid overflowing the screen so we base the resulting size on
@@ -117,7 +114,7 @@ var AppSwitcherPopup = new Lang.Class({
             childBox.y2 = childBox.y1 + childNaturalHeight;
             this._thumbnails.allocate(childBox, flags);
         }
-    },
+    }
 
     _initialSelection(backward, binding) {
         if (binding == 'switch-group') {
@@ -140,7 +137,7 @@ var AppSwitcherPopup = new Lang.Class({
         } else {
             this._select(1);
         }
-    },
+    }
 
     _nextWindow() {
         // We actually want the second window if we're in the unset state
@@ -148,14 +145,15 @@ var AppSwitcherPopup = new Lang.Class({
             this._currentWindow = 0;
         return SwitcherPopup.mod(this._currentWindow + 1,
                                  this._items[this._selectedIndex].cachedWindows.length);
-    },
+    }
+
     _previousWindow() {
         // Also assume second window here
         if (this._currentWindow == -1)
             this._currentWindow = 1;
         return SwitcherPopup.mod(this._currentWindow - 1,
                                  this._items[this._selectedIndex].cachedWindows.length);
-    },
+    }
 
     _closeAppWindow(appIndex, windowIndex) {
         let appIcon = this._items[appIndex];
@@ -167,7 +165,7 @@ var AppSwitcherPopup = new Lang.Class({
             return;
 
         window.delete(global.get_current_time());
-    },
+    }
 
     _quitApplication(appIndex) {
         let appIcon = this._items[appIndex];
@@ -175,7 +173,7 @@ var AppSwitcherPopup = new Lang.Class({
             return;
 
         appIcon.app.request_quit();
-    },
+    }
 
     _keyPressHandler(keysym, action) {
         if (action == Meta.KeyBindingAction.SWITCH_GROUP) {
@@ -214,7 +212,7 @@ var AppSwitcherPopup = new Lang.Class({
         }
 
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _scrollHandler(direction) {
         if (direction == Clutter.ScrollDirection.UP) {
@@ -244,7 +242,7 @@ var AppSwitcherPopup = new Lang.Class({
                     this._select(this._next());
             }
         }
-    },
+    }
 
     _itemActivatedHandler(n) {
         // If the user clicks on the selected app, activate the
@@ -254,24 +252,24 @@ var AppSwitcherPopup = new Lang.Class({
             this._select(n, this._currentWindow);
         else
             this._select(n);
-    },
+    }
 
     _itemEnteredHandler(n) {
         this._select(n);
-    },
+    }
 
     _windowActivated(thumbnailList, n) {
         let appIcon = this._items[this._selectedIndex];
         Main.activateWindow(appIcon.cachedWindows[n]);
         this.fadeAndDestroy();
-    },
+    }
 
     _windowEntered(thumbnailList, n) {
         if (!this.mouseActive)
             return;
 
         this._select(this._selectedIndex, n);
-    },
+    }
 
     _windowRemoved(thumbnailList, n) {
         let appIcon = this._items[this._selectedIndex];
@@ -282,7 +280,7 @@ var AppSwitcherPopup = new Lang.Class({
             let newIndex = Math.min(n, appIcon.cachedWindows.length - 1);
             this._select(this._selectedIndex, newIndex);
         }
-    },
+    }
 
     _finish(timestamp) {
         let appIcon = this._items[this._selectedIndex];
@@ -291,17 +289,17 @@ var AppSwitcherPopup = new Lang.Class({
         else if (appIcon.cachedWindows[this._currentWindow])
             Main.activateWindow(appIcon.cachedWindows[this._currentWindow], timestamp);
 
-        this.parent();
-    },
+        super._finish(timestamp);
+    }
 
     _onDestroy() {
-        this.parent();
+        super._onDestroy();
 
         if (this._thumbnails)
             this._destroyThumbnails();
         if (this._thumbnailTimeoutId != 0)
             Mainloop.source_remove(this._thumbnailTimeoutId);
-    },
+    }
 
     /**
      * _select:
@@ -357,7 +355,7 @@ var AppSwitcherPopup = new Lang.Class({
                 this._timeoutPopupThumbnails.bind(this));
             GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails');
         }
-    },
+    }
 
     _timeoutPopupThumbnails() {
         if (!this._thumbnails)
@@ -365,7 +363,7 @@ var AppSwitcherPopup = new Lang.Class({
         this._thumbnailTimeoutId = 0;
         this._thumbnailsFocused = false;
         return GLib.SOURCE_REMOVE;
-    },
+    }
 
     _destroyThumbnails() {
         let thumbnailsActor = this._thumbnails;
@@ -379,9 +377,9 @@ var AppSwitcherPopup = new Lang.Class({
                            }
                          });
         this._thumbnails = null;
-        if  (this._switcherList._items[this._selectedIndex])
+        if (this._switcherList._items[this._selectedIndex])
             this._switcherList._items[this._selectedIndex].remove_accessible_state (Atk.StateType.EXPANDED);
-    },
+    }
 
     _createThumbnails() {
         this._thumbnails = new ThumbnailList (this._items[this._selectedIndex].cachedWindows);
@@ -472,26 +470,24 @@ class CyclerHighlight {
 
 // We don't show an actual popup, so just provide what SwitcherPopup
 // expects instead of inheriting from SwitcherList
-var CyclerList = new Lang.Class({
-    Name: 'CyclerList',
-    Extends: St.Widget,
+var CyclerList = GObject.registerClass({
     Signals: { 'item-activated': { param_types: [GObject.TYPE_INT] },
                'item-entered': { param_types: [GObject.TYPE_INT] },
                'item-removed': { param_types: [GObject.TYPE_INT] },
                'item-highlighted': { param_types: [GObject.TYPE_INT] } },
-
+}, class CyclerList extends St.Widget {
     highlight(index, justOutline) {
         this.emit('item-highlighted', index);
     }
 });
 
-var CyclerPopup = new Lang.Class({
-    Name: 'CyclerPopup',
-    Extends: SwitcherPopup.SwitcherPopup,
-    Abstract: true,
-
+var CyclerPopup = GObject.registerClass(
+class CyclerPopup extends SwitcherPopup.SwitcherPopup {
     _init() {
-        this.parent();
+        if (new.target === CyclerPopup)
+            throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
+
+        super._init();
 
         this._items = this._getWindows();
 
@@ -505,12 +501,12 @@ var CyclerPopup = new Lang.Class({
         this._switcherList.connect('item-highlighted', (list, index) => {
             this._highlightItem(index);
         });
-    },
+    }
 
     _highlightItem(index, justOutline) {
         this._highlight.window = this._items[index];
         global.window_group.set_child_above_sibling(this._highlight.actor, null);
-    },
+    }
 
     _finish() {
         let window = this._items[this._selectedIndex];
@@ -535,25 +531,23 @@ var CyclerPopup = new Lang.Class({
             Main.wm.actionMoveWindow(window, ws);
         }
 
-        this.parent();
-    },
+        super._finish();
+    }
 
     _onDestroy() {
         this._highlight.actor.destroy();
 
-        this.parent();
+        super._onDestroy();
     }
 });
 
 
-var GroupCyclerPopup = new Lang.Class({
-    Name: 'GroupCyclerPopup',
-    Extends: CyclerPopup,
-
+var GroupCyclerPopup = GObject.registerClass(
+class GroupCyclerPopup extends CyclerPopup {
     _getWindows() {
         let app = Shell.WindowTracker.get_default().focus_app;
         return app ? app.get_windows() : [];
-    },
+    }
 
     _keyPressHandler(keysym, action) {
         if (action == Meta.KeyBindingAction.CYCLE_GROUP)
@@ -567,12 +561,10 @@ var GroupCyclerPopup = new Lang.Class({
     }
 });
 
-var WindowSwitcherPopup = new Lang.Class({
-    Name: 'WindowSwitcherPopup',
-    Extends: SwitcherPopup.SwitcherPopup,
-
+var WindowSwitcherPopup = GObject.registerClass(
+class WindowSwitcherPopup extends SwitcherPopup.SwitcherPopup {
     _init() {
-        this.parent();
+        super._init();
         this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' });
 
         let windows = this._getWindowList();
@@ -583,7 +575,7 @@ var WindowSwitcherPopup = new Lang.Class({
         let mode = this._settings.get_enum('app-icon-mode');
         this._switcherList = new WindowList(windows, mode);
         this._items = this._switcherList.icons;
-    },
+    }
 
     _getWindowList() {
         let workspace = null;
@@ -595,7 +587,7 @@ var WindowSwitcherPopup = new Lang.Class({
         }
 
         return getWindows(workspace);
-    },
+    }
 
     _closeWindow(windowIndex) {
         let windowIcon = this._items[windowIndex];
@@ -603,7 +595,7 @@ var WindowSwitcherPopup = new Lang.Class({
             return;
 
         windowIcon.window.delete(global.get_current_time());
-    },
+    }
 
     _keyPressHandler(keysym, action) {
         if (action == Meta.KeyBindingAction.SWITCH_WINDOWS) {
@@ -622,23 +614,22 @@ var WindowSwitcherPopup = new Lang.Class({
         }
 
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _finish() {
         Main.activateWindow(this._items[this._selectedIndex].window);
 
-        this.parent();
+        super._finish();
     }
 });
 
-var WindowCyclerPopup = new Lang.Class({
-    Name: 'WindowCyclerPopup',
-    Extends: CyclerPopup,
-
+var WindowCyclerPopup = GObject.registerClass(
+class WindowCyclerPopup extends CyclerPopup {
     _init() {
+        super._init();
+
         this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' });
-        this.parent();
-    },
+    }
 
     _getWindows() {
         let workspace = null;
@@ -650,7 +641,7 @@ var WindowCyclerPopup = new Lang.Class({
         }
 
         return getWindows(workspace);
-    },
+    }
 
     _keyPressHandler(keysym, action) {
         if (action == Meta.KeyBindingAction.CYCLE_WINDOWS)
@@ -664,12 +655,10 @@ var WindowCyclerPopup = new Lang.Class({
     }
 });
 
-var AppIcon = new Lang.Class({
-    Name: 'AppIcon',
-    Extends: St.BoxLayout,
-
+var AppIcon = GObject.registerClass(
+class AppIcon extends St.BoxLayout {
     _init(app) {
-        this.parent({ style_class: 'alt-tab-app',
+        super._init({ style_class: 'alt-tab-app',
                       vertical: true });
 
         this.app = app;
@@ -679,28 +668,26 @@ var AppIcon = new Lang.Class({
         this.add(this._iconBin, { x_fill: false, y_fill: false } );
         this.label = new St.Label({ text: this.app.get_name() });
         this.add(this.label, { x_fill: false });
-    },
+    }
 
     set_size(size) {
         this.icon = this.app.create_icon_texture(size);
         this._iconBin.child = this.icon;
         this._iconBin.set_size(size, size);
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
-        let [minWidth, ] = this.parent(forHeight);
+        let [minWidth, ] = super.vfunc_get_preferred_width(forHeight);
 
         minWidth = Math.max(minWidth, forHeight);
         return [minWidth, minWidth];
     }
 });
 
-var AppSwitcher = new Lang.Class({
-    Name: 'AppSwitcher',
-    Extends: SwitcherPopup.SwitcherList,
-
+var AppSwitcher = GObject.registerClass(
+class AppSwitcher extends SwitcherPopup.SwitcherList {
     _init(apps, altTabPopup) {
-        this.parent(true);
+        super._init(true);
 
         this.icons = [];
         this._arrows = [];
@@ -734,7 +721,7 @@ var AppSwitcher = new Lang.Class({
         this._mouseTimeOutId = 0;
 
         this.connect('destroy', this._onDestroy.bind(this));
-    },
+    }
 
     _onDestroy() {
         if (this._mouseTimeOutId != 0)
@@ -743,7 +730,7 @@ var AppSwitcher = new Lang.Class({
         this.icons.forEach(icon => {
             icon.app.disconnect(icon._stateChangedId);
         });
-    },
+    }
 
     _setIconSize() {
         let j = 0;
@@ -784,16 +771,16 @@ var AppSwitcher = new Lang.Class({
                 break;
             this.icons[i].set_size(iconSize);
         }
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         this._setIconSize();
-        return this.parent(forWidth);
-    },
+        return super.vfunc_get_preferred_height(forWidth);
+    }
 
     vfunc_allocate(box, flags) {
         // Allocate the main list items
-        this.parent(box, flags);
+        super.vfunc_allocate(box, flags);
 
         let contentBox = this.get_theme_node().get_content_box(box);
 
@@ -810,7 +797,7 @@ var AppSwitcher = new Lang.Class({
             childBox.y2 = childBox.y1 + arrowHeight;
             this._arrows[i].allocate(childBox, flags);
         }
-    },
+    }
 
     // We override SwitcherList's _onItemEnter method to delay
     // activation when the thumbnail list is open
@@ -827,14 +814,14 @@ var AppSwitcher = new Lang.Class({
             GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem');
         } else
            this._itemEntered(index);
-    },
+    }
 
     _enterItem(index) {
         let [x, y, mask] = global.get_pointer();
         let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y);
         if (this._items[index].contains(pickedActor))
             this._itemEntered(index);
-    },
+    }
 
     // We override SwitcherList's highlight() method to also deal with
     // the AppSwitcher->ThumbnailList arrows. Apps with only 1 window
@@ -851,7 +838,7 @@ var AppSwitcher = new Lang.Class({
                 this._arrows[this._curApp].remove_style_pseudo_class('highlighted');
         }
 
-        this.parent(n, justOutline);
+        super.highlight(n, justOutline);
         this._curApp = n;
 
         if (this._curApp != -1) {
@@ -860,7 +847,7 @@ var AppSwitcher = new Lang.Class({
             else
                 this._arrows[this._curApp].add_style_pseudo_class('highlighted');
         }
-    },
+    }
 
     _addIcon(appIcon) {
         this.icons.push(appIcon);
@@ -881,7 +868,7 @@ var AppSwitcher = new Lang.Class({
             arrow.hide();
         else
             item.add_accessible_state (Atk.StateType.EXPANDABLE);
-    },
+    }
 
     _removeIcon(app) {
         let index = this.icons.findIndex(icon => {
@@ -892,15 +879,13 @@ var AppSwitcher = new Lang.Class({
 
         this.icons.splice(index, 1);
         this.removeItem(index);
-    },
+    }
 });
 
-var ThumbnailList = new Lang.Class({
-    Name: 'ThumbnailList',
-    Extends: SwitcherPopup.SwitcherList,
-
+var ThumbnailList = GObject.registerClass(
+class ThumbnailList extends SwitcherPopup.SwitcherList {
     _init(windows) {
-        this.parent(false);
+        super._init(false);
 
         this._labels = new Array();
         this._thumbnailBins = new Array();
@@ -933,7 +918,7 @@ var ThumbnailList = new Lang.Class({
         }
 
         this.connect('destroy', this._onDestroy.bind(this));
-    },
+    }
 
     addClones(availHeight) {
         if (!this._thumbnailBins.length)
@@ -966,7 +951,7 @@ var ThumbnailList = new Lang.Class({
 
         // Make sure we only do this once
         this._thumbnailBins = new Array();
-    },
+    }
 
     _removeThumbnail(source, clone) {
         let index = this._clones.indexOf(clone);
@@ -982,23 +967,20 @@ var ThumbnailList = new Lang.Class({
             this.highlight(SwitcherPopup.mod(index, this._clones.length));
         else
             this.destroy();
-    },
+    }
 
     _onDestroy() {
         this._clones.forEach(clone => {
             if (clone.source)
                 clone.source.disconnect(clone._destroyId);
         });
-    },
-
+    }
 });
 
-var WindowIcon = new Lang.Class({
-    Name: 'WindowIcon',
-    Extends: St.BoxLayout,
-
+var WindowIcon = GObject.registerClass(
+class WindowIcon extends St.BoxLayout {
     _init(window, mode) {
-        this.parent({ style_class: 'alt-tab-app',
+        super._init({ style_class: 'alt-tab-app',
                       vertical: true });
 
         this.window = window;
@@ -1039,7 +1021,7 @@ var WindowIcon = new Lang.Class({
         }
 
         this._icon.set_size(size * scaleFactor, size * scaleFactor);
-    },
+    }
 
     _createAppIcon(app, size) {
         let appIcon = app ? app.create_icon_texture(size)
@@ -1052,12 +1034,10 @@ var WindowIcon = new Lang.Class({
     }
 });
 
-var WindowList = new Lang.Class({
-    Name: 'WindowList',
-    Extends: SwitcherPopup.SwitcherList,
-
+var WindowList = GObject.registerClass(
+class WindowList extends SwitcherPopup.SwitcherList {
     _init(windows, mode) {
-        this.parent(true);
+        super._init(true);
 
         this._label = new St.Label({ x_align: Clutter.ActorAlign.CENTER,
                                      y_align: Clutter.ActorAlign.CENTER });
@@ -1079,16 +1059,16 @@ var WindowList = new Lang.Class({
         }
 
         this.connect('destroy', this._onDestroy.bind(this));
-    },
+    }
 
     _onDestroy() {
         this.icons.forEach(icon => {
             icon.window.disconnect(icon._unmanagedSignalId);
         });
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
-        let [minHeight, natHeight] = this.parent(forWidth);
+        let [minHeight, natHeight] = super.vfunc_get_preferred_height(forWidth);
 
         let spacing = this.get_theme_node().get_padding(St.Side.BOTTOM);
         let [labelMin, labelNat] = this._label.get_preferred_height(-1);
@@ -1097,7 +1077,7 @@ var WindowList = new Lang.Class({
         natHeight += labelNat + spacing;
 
         return [minHeight, natHeight];
-    },
+    }
 
     vfunc_allocate(box, flags) {
         let themeNode = this.get_theme_node();
@@ -1115,19 +1095,19 @@ var WindowList = new Lang.Class({
         childBox.x2 = box.x2;
         childBox.y1 = box.y1;
         childBox.y2 = box.y2 - totalLabelHeight;
-        this.parent(childBox, flags);
+        super.vfunc_allocate(childBox, flags);
 
         // Hooking up the parent vfunc will call this.set_allocation() with
         // the height without the label height, so call it again with the
         // correct size here.
         this.set_allocation(box, flags);
-    },
+    }
 
     highlight(index, justOutline) {
-        this.parent(index, justOutline);
+        super.highlight(index, justOutline);
 
         this._label.set_text(index == -1 ? '' : this.icons[index].label.text);
-    },
+    }
 
     _removeWindow(window) {
         let index = this.icons.findIndex(icon => {
index 0feb26ff588671d8a28c1c07f14969c72f058398..8b9429762546acd801d3b3d21ab14398effcb9dc 100644 (file)
@@ -6,7 +6,6 @@ const GLib = imports.gi.GLib;
 const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
 const Shell = imports.gi.Shell;
-const Lang = imports.lang;
 const Signals = imports.signals;
 const Meta = imports.gi.Meta;
 const St = imports.gi.St;
@@ -247,26 +246,24 @@ class BaseAppView {
 };
 Signals.addSignalMethods(BaseAppView.prototype);
 
-var PageIndicatorsActor = new Lang.Class({
-    Name:'PageIndicatorsActor',
-    Extends: St.BoxLayout,
-
+var PageIndicatorsActor = GObject.registerClass(
+class PageIndicatorsActor extends St.BoxLayout {
     _init() {
-        this.parent({ style_class: 'page-indicators',
+        super._init({ style_class: 'page-indicators',
                       vertical: true,
                       x_expand: true, y_expand: true,
                       x_align: Clutter.ActorAlign.END,
                       y_align: Clutter.ActorAlign.CENTER,
                       reactive: true,
                       clip_to_allocation: true });
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         // We want to request the natural height of all our children as our
         // natural height, so we chain up to St.BoxLayout, but we only request 0
         // as minimum height, since it's not that important if some indicators
         // are not shown
-        let [, natHeight] = this.parent(forWidth);
+        let [, natHeight] = super.vfunc_get_preferred_height(forWidth);
         return [0, natHeight];
     }
 });
@@ -843,10 +840,8 @@ var Views = {
     ALL: 1
 };
 
-var ControlsBoxLayout = Lang.Class({
-    Name: 'ControlsBoxLayout',
-    Extends: Clutter.BoxLayout,
-
+var ControlsBoxLayout = GObject.registerClass(
+class ControlsBoxLayout extends Clutter.BoxLayout {
     /**
      * Override the BoxLayout behavior to use the maximum preferred width of all
      * buttons for each child
@@ -868,19 +863,17 @@ var ControlsBoxLayout = Lang.Class({
     }
 });
 
-var ViewStackLayout = new Lang.Class({
-    Name: 'ViewStackLayout',
-    Extends: Clutter.BinLayout,
+var ViewStackLayout = GObject.registerClass({
     Signals: { 'allocated-size-changed': { param_types: [GObject.TYPE_INT,
                                                          GObject.TYPE_INT] } },
-
+}, class ViewStackLayout extends Clutter.BinLayout {
     vfunc_allocate(actor, box, flags) {
         let availWidth = box.x2 - box.x1;
         let availHeight = box.y2 - box.y1;
         // Prepare children of all views for the upcoming allocation, calculate all
         // the needed values to adapt available size
         this.emit('allocated-size-changed', availWidth, availHeight);
-        this.parent(actor, box, flags);
+        super.vfunc_allocate(actor, box, flags);
     }
 });
 
index 8d916887c97ab8207a4a4c4702c56eba5899cdf5..2abaa82469338f61a0b7cd184fa3a49363ad1df6 100644 (file)
@@ -1,7 +1,7 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 
 const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
+const GObject = imports.gi.GObject;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 const Signals = imports.signals;
@@ -32,13 +32,11 @@ var POPUP_ANIMATION_TIME = 0.15;
  * totally inside the monitor if possible.
  *
  */
-var BoxPointer = new Lang.Class({
-    Name: 'BoxPointer',
-    Extends: St.Widget,
+var BoxPointer = GObject.registerClass({
     Signals: { 'arrow-side-changed': {} },
-
+}, class BoxPointer extends St.Widget {
     _init(arrowSide, binProperties) {
-        this.parent();
+        super._init();
 
         this.actor = this;
 
@@ -61,24 +59,24 @@ var BoxPointer = new Lang.Class({
         this._sourceAlignment = 0.5;
         this._capturedEventId = 0;
         this._muteInput();
-    },
+    }
 
     get arrowSide() {
         return this._arrowSide;
-    },
+    }
 
     _muteInput() {
         if (this._capturedEventId == 0)
             this._capturedEventId = this.connect('captured-event',
                                                  () => Clutter.EVENT_STOP);
-    },
+    }
 
     _unmuteInput() {
         if (this._capturedEventId != 0) {
             this.disconnect(this._capturedEventId);
             this._capturedEventId = 0;
         }
-    },
+    }
 
     // BoxPointer.show() and BoxPointer.hide() are here for only compatibility
     // purposes, and will be removed in 3.32.
@@ -94,7 +92,7 @@ var BoxPointer = new Lang.Class({
         }
 
         this.visible = true;
-    },
+    }
 
     hide(animate, onComplete) {
         if (animate !== undefined) {
@@ -108,7 +106,7 @@ var BoxPointer = new Lang.Class({
         }
 
         this.visible = false;
-    },
+    }
 
     open(animate, onComplete) {
         let themeNode = this.get_theme_node();
@@ -149,7 +147,7 @@ var BoxPointer = new Lang.Class({
                                          onComplete();
                                  },
                                  time: animationTime });
-    },
+    }
 
     close(animate, onComplete) {
         if (!this.visible)
@@ -196,7 +194,7 @@ var BoxPointer = new Lang.Class({
                                          onComplete();
                                  }
                                });
-    },
+    }
 
     _adjustAllocationForArrow(isWidth, minSize, natSize) {
         let themeNode = this.get_theme_node();
@@ -211,7 +209,7 @@ var BoxPointer = new Lang.Class({
         }
 
         return [minSize, natSize];
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         let themeNode = this.get_theme_node();
@@ -221,7 +219,7 @@ var BoxPointer = new Lang.Class({
         width = this._adjustAllocationForArrow(true, ...width);
 
         return themeNode.adjust_preferred_width(...width);
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         let themeNode = this.get_theme_node();
@@ -232,7 +230,7 @@ var BoxPointer = new Lang.Class({
         height = this._adjustAllocationForArrow(false, ...height);
 
         return themeNode.adjust_preferred_height(...height);
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -276,7 +274,7 @@ var BoxPointer = new Lang.Class({
             this._reposition();
             this._updateFlip();
         }
-    },
+    }
 
     _drawBorder(area) {
         let themeNode = this.get_theme_node();
@@ -458,7 +456,7 @@ var BoxPointer = new Lang.Class({
         }
 
         cr.$dispose();
-    },
+    }
 
     setPosition(sourceActor, alignment) {
         // We need to show it now to force an allocation,
@@ -470,7 +468,7 @@ var BoxPointer = new Lang.Class({
 
         this._reposition();
         this._updateFlip();
-    },
+    }
 
     setSourceAlignment(alignment) {
         this._sourceAlignment = alignment;
@@ -479,7 +477,7 @@ var BoxPointer = new Lang.Class({
             return;
 
         this.setPosition(this._sourceActor, this._arrowAlignment);
-    },
+    }
 
     _reposition() {
         let sourceActor = this._sourceActor;
@@ -593,7 +591,7 @@ var BoxPointer = new Lang.Class({
         this._xPosition = Math.floor(x);
         this._yPosition = Math.floor(y);
         this._shiftActor();
-    },
+    }
 
     // @origin: Coordinate specifying middle of the arrow, along
     // the Y axis for St.Side.LEFT, St.Side.RIGHT from the top and X axis from
@@ -603,7 +601,7 @@ var BoxPointer = new Lang.Class({
             this._arrowOrigin = origin;
             this._border.queue_repaint();
         }
-    },
+    }
 
     // @actor: an actor relative to which the arrow is positioned.
     // Differently from setPosition, this will not move the boxpointer itself,
@@ -613,7 +611,7 @@ var BoxPointer = new Lang.Class({
             this._arrowActor = actor;
             this._border.queue_repaint();
         }
-    },
+    }
 
     _shiftActor() {
         // Since the position of the BoxPointer depends on the allocated size
@@ -624,7 +622,7 @@ var BoxPointer = new Lang.Class({
         // x == y == 0.
         this.set_anchor_point(-(this._xPosition + this._xOffset),
                               -(this._yPosition + this._yOffset));
-    },
+    }
 
     _calculateArrowSide(arrowSide) {
         let sourceAllocation = Shell.util_get_transformed_allocation(this._sourceActor);
@@ -658,7 +656,7 @@ var BoxPointer = new Lang.Class({
         }
 
         return arrowSide;
-    },
+    }
 
     _updateFlip() {
         let arrowSide = this._calculateArrowSide(this._userArrowSide);
@@ -672,36 +670,36 @@ var BoxPointer = new Lang.Class({
 
             this.emit('arrow-side-changed');
         }
-    },
+    }
 
     set xOffset(offset) {
         this._xOffset = offset;
         this._shiftActor();
-    },
+    }
 
     get xOffset() {
         return this._xOffset;
-    },
+    }
 
     set yOffset(offset) {
         this._yOffset = offset;
         this._shiftActor();
-    },
+    }
 
     get yOffset() {
         return this._yOffset;
-    },
+    }
 
     updateArrowSide(side) {
         this._arrowSide = side;
         this._border.queue_repaint();
 
         this.emit('arrow-side-changed');
-    },
+    }
 
     getPadding(side) {
         return this.bin.get_theme_node().get_padding(side);
-    },
+    }
 
     getArrowHeight() {
         return this.get_theme_node().get_length('-arrow-rise');
index 2d019213ee80668dc60d85e5ddbff07c0e53f342..f90d25f8eea64d6fe0799d5e49ec2dde77e41a61 100644 (file)
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
 const GObject = imports.gi.GObject;
-const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 
@@ -16,31 +15,29 @@ var FROZEN_WINDOW_BRIGHTNESS = -0.3
 var DIALOG_TRANSITION_TIME = 0.15
 var ALIVE_TIMEOUT = 5000;
 
-var CloseDialog = new Lang.Class({
-    Name: 'CloseDialog',
-    Extends: GObject.Object,
+var CloseDialog = GObject.registerClass({
     Implements: [ Meta.CloseDialog ],
     Properties: {
         'window': GObject.ParamSpec.override('window', Meta.CloseDialog)
     },
-
+}, class CloseDialog extends GObject.Object {
     _init(window) {
-        this.parent();
+        super._init();
         this._window = window;
         this._dialog = null;
         this._tracked = undefined;
         this._timeoutId = 0;
         this._windowFocusChangedId = 0;
         this._keyFocusChangedId = 0;
-    },
+    }
 
     get window() {
         return this._window;
-    },
+    }
 
     set window(window) {
         this._window = window;
-    },
+    }
 
     _createDialogContent() {
         let tracker = Shell.WindowTracker.get_default();
@@ -52,7 +49,7 @@ var CloseDialog = new Lang.Class({
                          "continue or force the application to quit entirely.");
         let icon = new Gio.ThemedIcon({ name: 'dialog-warning-symbolic' });
         return new Dialog.MessageDialogContent({ icon, title, subtitle });
-    },
+    }
 
     _initDialog() {
         if (this._dialog)
@@ -72,7 +69,7 @@ var CloseDialog = new Lang.Class({
                                  key:    Clutter.Escape });
 
         global.focus_manager.add_group(this._dialog);
-    },
+    }
 
     _addWindowEffect() {
         // We set the effect on the surface actor, so the dialog itself
@@ -83,21 +80,21 @@ var CloseDialog = new Lang.Class({
         let effect = new Clutter.BrightnessContrastEffect();
         effect.set_brightness(FROZEN_WINDOW_BRIGHTNESS);
         surfaceActor.add_effect_with_name("gnome-shell-frozen-window", effect);
-    },
+    }
 
     _removeWindowEffect() {
         let windowActor = this._window.get_compositor_private();
         let surfaceActor = windowActor.get_first_child();
         surfaceActor.remove_effect_by_name("gnome-shell-frozen-window");
-    },
+    }
 
     _onWait() {
         this.response(Meta.CloseDialogResponse.WAIT);
-    },
+    }
 
     _onClose() {
         this.response(Meta.CloseDialogResponse.FORCE_CLOSE);
-    },
+    }
 
     _onFocusChanged() {
         if (Meta.is_wayland_compositor())
@@ -128,7 +125,7 @@ var CloseDialog = new Lang.Class({
         });
 
         this._tracked = shouldTrack;
-    },
+    }
 
     vfunc_show() {
         if (this._dialog != null)
@@ -162,7 +159,7 @@ var CloseDialog = new Lang.Class({
                            time: DIALOG_TRANSITION_TIME,
                            onComplete: this._onFocusChanged.bind(this)
                          });
-    },
+    }
 
     vfunc_hide() {
         if (this._dialog == null)
@@ -191,7 +188,7 @@ var CloseDialog = new Lang.Class({
                                dialog.destroy();
                            }
                          });
-    },
+    }
 
     vfunc_focus() {
         if (this._dialog)
index d26e8a07e5c9855b5ca7bde5b630470dbb873330..41b4985f466be06c84778315126f6b35e6349c2b 100644 (file)
@@ -3,6 +3,7 @@
 const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
 const Lang = imports.lang;
 const Mainloop = imports.mainloop;
@@ -111,10 +112,8 @@ var TelepathyComponent = class {
     }
 };
 
-var TelepathyClient = HAVE_TP ? new Lang.Class({
-    Name: 'TelepathyClient',
-    Extends: Tp.BaseClient,
-
+var TelepathyClient = HAVE_TP ? GObject.registerClass(
+class TelepathyClient extends Tp.BaseClient {
     _init() {
         // channel path -> ChatSource
         this._chatSources = {};
@@ -138,7 +137,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
         // channel matching its filters is detected.
         // The second argument, recover, means _observeChannels will be run
         // for any existing channel as well.
-        this.parent({ name: 'GnomeShell',
+        super._init({ name: 'GnomeShell',
                       account_manager: this._accountManager,
                       uniquify_name: true });
 
@@ -156,7 +155,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
         // needed
         this.set_delegated_channels_callback(
             this._delegatedChannelsCb.bind(this));
-    },
+    }
 
     vfunc_observe_channels(account, conn, channels,
                                      dispatchOp, requests, context) {
@@ -177,7 +176,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
         }
 
         context.accept();
-    },
+    }
 
     _createChatSource(account, conn, channel, contact) {
         if (this._chatSources[channel.get_object_path()])
@@ -189,13 +188,13 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
         source.connect('destroy', () => {
             delete this._chatSources[channel.get_object_path()];
         });
-    },
+    }
 
     vfunc_handle_channels(account, conn, channels, requests,
                                     user_action_time, context) {
         this._handlingChannels(account, conn, channels, true);
         context.accept();
-    },
+    }
 
     _handlingChannels(account, conn, channels, notify) {
         let len = channels.length;
@@ -229,7 +228,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
                     source.notify();
             }
         }
-    },
+    }
 
     vfunc_add_dispatch_operation(account, conn, channels,
                                            dispatchOp, context) {
@@ -247,7 +246,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
         else
             context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
                                         message: 'Unsupported channel type' }));
-    },
+    }
 
     _approveTextChannel(account, conn, channel, dispatchOp, context) {
         let [targetHandle, targetHandleType] = channel.get_handle();
@@ -269,12 +268,12 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
         });
 
         context.accept();
-    },
+    }
 
     _delegatedChannelsCb(client, channels) {
         // Nothing to do as we don't make a distinction between observed and
         // handled channels.
-    },
+    }
 }) : null;
 
 var ChatSource = class extends MessageTray.Source {
@@ -794,12 +793,10 @@ var ChatNotification = class extends MessageTray.Notification {
     }
 };
 
-var ChatLineBox = new Lang.Class({
-    Name: 'ChatLineBox',
-    Extends: St.BoxLayout,
-
+var ChatLineBox = GObject.registerClass(
+class ChatLineBox extends St.BoxLayout {
     vfunc_get_preferred_height(forWidth) {
-        let [, natHeight] = this.parent(forWidth);
+        let [, natHeight] = super.vfunc_get_preferred_height(forWidth);
         return [natHeight, natHeight];
     }
 });
index be529213ebc886f57f1abae4f4a829cb821af9f2..74e0aca874e5fba8968f0989c86adbc7e738e94f 100644 (file)
@@ -3,8 +3,8 @@
 const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
 const Signals = imports.signals;
-const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 const St = imports.gi.St;
@@ -33,12 +33,10 @@ function getAppFromSource(source) {
 
 // A container like StBin, but taking the child's scale into account
 // when requesting a size
-var DashItemContainer = new Lang.Class({
-    Name: 'DashItemContainer',
-    Extends: St.Widget,
-
+var DashItemContainer = GObject.registerClass(
+class DashItemContainer extends St.Widget {
     _init() {
-        this.parent({ style_class: 'dash-item-container',
+        super._init({ style_class: 'dash-item-container',
                       pivot_point: new Clutter.Point({ x: .5, y: .5 }),
                       x_expand: true,
                       x_align: Clutter.ActorAlign.CENTER });
@@ -59,23 +57,23 @@ var DashItemContainer = new Lang.Class({
                 this.child.destroy();
             this.label.destroy();
         });
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         let themeNode = this.get_theme_node();
         forWidth = themeNode.adjust_for_width(forWidth);
-        let [minHeight, natHeight] = this.parent(forWidth);
+        let [minHeight, natHeight] = super.vfunc_get_preferred_height(forWidth);
         return themeNode.adjust_preferred_height(minHeight * this.scale_y,
                                                  natHeight * this.scale_y);
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         let themeNode = this.get_theme_node();
         forHeight = themeNode.adjust_for_height(forHeight);
-        let [minWidth, natWidth] = this.parent(forHeight);
+        let [minWidth, natWidth] = super.vfunc_get_preferred_width(forHeight);
         return themeNode.adjust_preferred_width(minWidth * this.scale_x,
                                                 natWidth * this.scale_x);
-    },
+    }
 
     showLabel() {
         if (!this._labelText)
@@ -109,12 +107,12 @@ var DashItemContainer = new Lang.Class({
                            time: DASH_ITEM_LABEL_SHOW_TIME,
                            transition: 'easeOutQuad',
                          });
-    },
+    }
 
     setLabelText(text) {
         this._labelText = text;
         this.child.accessible_name = text;
-    },
+    }
 
     hideLabel() {
         Tweener.addTween(this.label,
@@ -125,7 +123,7 @@ var DashItemContainer = new Lang.Class({
                                this.label.hide();
                            }
                          });
-    },
+    }
 
     setChild(actor) {
         if (this.child == actor)
@@ -138,7 +136,7 @@ var DashItemContainer = new Lang.Class({
 
         this.set_scale(this._childScale, this._childScale);
         this.set_opacity(this._childOpacity);
-    },
+    }
 
     show(animate) {
         if (this.child == null)
@@ -151,7 +149,7 @@ var DashItemContainer = new Lang.Class({
                            time: time,
                            transition: 'easeOutQuad'
                          });
-    },
+    }
 
     animateOutAndDestroy() {
         this.label.hide();
@@ -171,37 +169,35 @@ var DashItemContainer = new Lang.Class({
                                this.destroy();
                            }
                          });
-    },
+    }
 
     set childScale(scale) {
         this._childScale = scale;
 
         this.set_scale(scale, scale);
         this.queue_relayout();
-    },
+    }
 
     get childScale() {
         return this._childScale;
-    },
+    }
 
     set childOpacity(opacity) {
         this._childOpacity = opacity;
 
         this.set_opacity(opacity);
         this.queue_redraw();
-    },
+    }
 
     get childOpacity() {
         return this._childOpacity;
     }
 });
 
-var ShowAppsIcon = new Lang.Class({
-    Name: 'ShowAppsIcon',
-    Extends: DashItemContainer,
-
+var ShowAppsIcon = GObject.registerClass(
+class ShowAppsIcon extends DashItemContainer {
     _init() {
-        this.parent();
+        super._init();
 
         this.toggleButton = new St.Button({ style_class: 'show-apps',
                                             track_hover: true,
@@ -217,7 +213,7 @@ var ShowAppsIcon = new Lang.Class({
 
         this.setChild(this.toggleButton);
         this.setDragApp(null);
-    },
+    }
 
     _createIcon(size) {
         this._iconActor = new St.Icon({ icon_name: 'view-app-grid-symbolic',
@@ -225,7 +221,7 @@ var ShowAppsIcon = new Lang.Class({
                                         style_class: 'show-apps-icon',
                                         track_hover: true });
         return this._iconActor;
-    },
+    }
 
     _canRemoveApp(app) {
         if (app == null)
@@ -237,7 +233,7 @@ var ShowAppsIcon = new Lang.Class({
         let id = app.get_id();
         let isFavorite = AppFavorites.getAppFavorites().isFavorite(id);
         return isFavorite;
-    },
+    }
 
     setDragApp(app) {
         let canRemove = this._canRemoveApp(app);
@@ -250,14 +246,14 @@ var ShowAppsIcon = new Lang.Class({
             this.setLabelText(_("Remove from Favorites"));
         else
             this.setLabelText(_("Show Applications"));
-    },
+    }
 
     handleDragOver(source, actor, x, y, time) {
         if (!this._canRemoveApp(getAppFromSource(source)))
             return DND.DragMotionResult.NO_DROP;
 
         return DND.DragMotionResult.MOVE_DROP;
-    },
+    }
 
     acceptDrop(source, actor, x, y, time) {
         let app = getAppFromSource(source);
@@ -275,36 +271,30 @@ var ShowAppsIcon = new Lang.Class({
     }
 });
 
-var DragPlaceholderItem = new Lang.Class({
-    Name: 'DragPlaceholderItem',
-    Extends: DashItemContainer,
-
+var DragPlaceholderItem = GObject.registerClass(
+class DragPlaceholderItem extends DashItemContainer {
     _init() {
-        this.parent();
+        super._init();
         this.setChild(new St.Bin({ style_class: 'placeholder' }));
     }
 });
 
-var EmptyDropTargetItem = new Lang.Class({
-    Name: 'EmptyDropTargetItem',
-    Extends: DashItemContainer,
-
+var EmptyDropTargetItem = GObject.registerClass(
+class EmptyDropTargetItem extends DashItemContainer {
     _init() {
-        this.parent();
+        super._init();
         this.setChild(new St.Bin({ style_class: 'empty-dash-drop-target' }));
     }
 });
 
-var DashActor = new Lang.Class({
-    Name: 'DashActor',
-    Extends: St.Widget,
-
+var DashActor = GObject.registerClass(
+class DashActor extends St.Widget {
     _init() {
         let layout = new Clutter.BoxLayout({ orientation: Clutter.Orientation.VERTICAL });
-        this.parent({ name: 'dash',
+        super._init({ name: 'dash',
                       layout_manager: layout,
                       clip_to_allocation: true });
-    },
+    }
 
     vfunc_allocate(box, flags) {
         let contentBox = this.get_theme_node().get_content_box(box);
@@ -325,7 +315,7 @@ var DashActor = new Lang.Class({
         childBox.y1 = contentBox.y2 - showAppsNatHeight;
         childBox.y2 = contentBox.y2;
         showAppsButton.allocate(childBox, flags);
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         // We want to request the natural height of all our children
@@ -333,7 +323,7 @@ var DashActor = new Lang.Class({
         // then calls BoxLayout), but we only request the showApps
         // button as the minimum size
 
-        let [, natHeight] = this.parent(forWidth);
+        let [, natHeight] = super.vfunc_get_preferred_height(forWidth);
 
         let themeNode = this.get_theme_node();
         let adjustedForWidth = themeNode.adjust_for_width(forWidth);
index a95c09ec25cae99140eb46903b426182fc8bee88..b2e2f0cd8ad12c39182245417d2e1065c5bc4d43 100644 (file)
@@ -6,7 +6,6 @@ const GnomeDesktop = imports.gi.GnomeDesktop;
 const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
 const GWeather = imports.gi.GWeather;
-const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const Pango = imports.gi.Pango;
 const Cairo = imports.cairo;
@@ -371,21 +370,19 @@ var MessagesIndicator = class MessagesIndicator {
     }
 };
 
-var IndicatorPad = new Lang.Class({
-    Name: 'IndicatorPad',
-    Extends: St.Widget,
-
+var IndicatorPad = GObject.registerClass(
+class IndicatorPad extends St.Widget {
     _init(actor) {
         this._source = actor;
         this._source.connect('notify::visible', () => { this.queue_relayout(); });
-        this.parent();
-    },
+        super._init();
+    }
 
     vfunc_get_preferred_width(container, forHeight) {
         if (this._source.visible)
             return this._source.get_preferred_width(forHeight);
         return [0, 0];
-    },
+    }
 
     vfunc_get_preferred_height(container, forWidth) {
         if (this._source.visible)
@@ -394,17 +391,15 @@ var IndicatorPad = new Lang.Class({
     }
 });
 
-var FreezableBinLayout = new Lang.Class({
-    Name: 'FreezableBinLayout',
-    Extends: Clutter.BinLayout,
-
+var FreezableBinLayout = GObject.registerClass(
+class FreezableBinLayout extends Clutter.BinLayout {
     _init() {
-        this.parent();
+        super._init();
 
         this._frozen = false;
         this._savedWidth = [NaN, NaN];
         this._savedHeight = [NaN, NaN];
-    },
+    }
 
     set frozen(v) {
         if (this._frozen == v)
@@ -413,22 +408,22 @@ var FreezableBinLayout = new Lang.Class({
         this._frozen = v;
         if (!this._frozen)
             this.layout_changed();
-    },
+    }
 
     vfunc_get_preferred_width(container, forHeight) {
         if (!this._frozen || this._savedWidth.some(isNaN))
-            return this.parent(container, forHeight);
+            return super.vfunc_get_preferred_width(container, forHeight);
         return this._savedWidth;
-    },
+    }
 
     vfunc_get_preferred_height(container, forWidth) {
         if (!this._frozen || this._savedHeight.some(isNaN))
-            return this.parent(container, forWidth);
+            return super.vfunc_get_preferred_height(container, forWidth);
         return this._savedHeight;
-    },
+    }
 
     vfunc_allocate(container, allocation, flags) {
-        this.parent(container, allocation, flags);
+        super.vfunc_allocate(container, allocation, flags);
 
         let [width, height] = allocation.get_size();
         this._savedWidth = [width, width];
@@ -436,26 +431,22 @@ var FreezableBinLayout = new Lang.Class({
     }
 });
 
-var CalendarColumnLayout = new Lang.Class({
-    Name: 'CalendarColumnLayout',
-    Extends: Clutter.BoxLayout,
-
+var CalendarColumnLayout = GObject.registerClass(
+class CalendarColumnLayout extends Clutter.BoxLayout {
     _init(actor) {
-        this.parent({ orientation: Clutter.Orientation.VERTICAL });
+        super._init({ orientation: Clutter.Orientation.VERTICAL });
         this._calActor = actor;
-    },
+    }
 
     vfunc_get_preferred_width(container, forHeight) {
         if (!this._calActor || this._calActor.get_parent() != container)
-            return this.parent(container, forHeight);
+            return super.vfunc_get_preferred_width(container, forHeight);
         return this._calActor.get_preferred_width(forHeight);
     }
 });
 
-var DateMenuButton = new Lang.Class({
-    Name: 'DateMenuButton',
-    Extends: PanelMenu.Button,
-
+var DateMenuButton = GObject.registerClass(
+class DateMenuButton extends PanelMenu.Button {
     _init() {
         let item;
         let hbox;
@@ -464,7 +455,7 @@ var DateMenuButton = new Lang.Class({
         let menuAlignment = 0.5;
         if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
             menuAlignment = 1.0 - menuAlignment;
-        this.parent(menuAlignment);
+        super._init(menuAlignment);
 
         this._clockDisplay = new St.Label({ y_align: Clutter.ActorAlign.CENTER });
         this._indicator = new MessagesIndicator();
@@ -545,11 +536,11 @@ var DateMenuButton = new Lang.Class({
 
         Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
         this._sessionUpdated();
-    },
+    }
 
     _getEventSource() {
         return new Calendar.DBusEventSource();
-    },
+    }
 
     _setEventSource(eventSource) {
         if (this._eventSource)
@@ -559,7 +550,7 @@ var DateMenuButton = new Lang.Class({
         this._messageList.setEventSource(eventSource);
 
         this._eventSource = eventSource;
-    },
+    }
 
     _updateTimeZone() {
         // SpiderMonkey caches the time zone so we must explicitly clear it
@@ -568,7 +559,7 @@ var DateMenuButton = new Lang.Class({
         System.clearDateCaches();
 
         this._calendar.updateTimeZone();
-    },
+    }
 
     _sessionUpdated() {
         let eventSource;
@@ -584,5 +575,5 @@ var DateMenuButton = new Lang.Class({
         // but the corresponding app (clocks, weather); however we can consider
         // that display-specific settings, so re-use "allowSettings" here ...
         this._displaysSection.visible = Main.sessionMode.allowSettings;
-    },
+    }
 });
index 0dd33706b8bc569824da817e97bf40e5c410b1a1..f9d116eeea560551e58da53645448b0529666e07 100644 (file)
@@ -5,14 +5,11 @@ const Gio = imports.gi.Gio;
 const GObject = imports.gi.GObject;
 const Pango = imports.gi.Pango;
 const St = imports.gi.St;
-const Lang = imports.lang;
-
-var Dialog = new Lang.Class({
-    Name: 'Dialog',
-    Extends: St.Widget,
 
+var Dialog = GObject.registerClass(
+class Dialog extends St.Widget {
     _init(parentActor, styleClass) {
-        this.parent({ layout_manager: new Clutter.BinLayout() });
+        super._init({ layout_manager: new Clutter.BinLayout() });
         this.connect('destroy', this._onDestroy.bind(this));
 
         this._initialKeyFocus = null;
@@ -28,7 +25,7 @@ var Dialog = new Lang.Class({
         this._parentActor = parentActor;
         this._eventId = this._parentActor.connect('event', this._modalEventHandler.bind(this));
         this._parentActor.add_child(this);
-    },
+    }
 
     _createDialog() {
         this._dialog = new St.BoxLayout({ style_class: 'modal-dialog',
@@ -55,13 +52,13 @@ var Dialog = new Lang.Class({
         this._dialog.add(this.buttonLayout,
                          { x_align: St.Align.MIDDLE,
                            y_align: St.Align.START });
-    },
+    }
 
     _onDestroy() {
         if (this._eventId != 0)
             this._parentActor.disconnect(this._eventId);
         this._eventId = 0;
-    },
+    }
 
     _modalEventHandler(actor, event) {
         if (event.type() == Clutter.EventType.KEY_PRESS) {
@@ -87,7 +84,7 @@ var Dialog = new Lang.Class({
         }
 
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     _setInitialKeyFocus(actor) {
         if (this._initialKeyFocus)
@@ -99,15 +96,15 @@ var Dialog = new Lang.Class({
             this._initialKeyFocus = null;
             this._initialKeyFocusDestroyId = 0;
         });
-    },
+    }
 
     get initialKeyFocus() {
         return this._initialKeyFocus || this;
-    },
+    }
 
     addContent(actor) {
         this.contentLayout.add (actor, { expand: true });
-    },
+    }
 
     addButton(buttonInfo) {
         let { label, action, key } = buttonInfo;
@@ -144,17 +141,15 @@ var Dialog = new Lang.Class({
         this.buttonLayout.add_actor(button);
 
         return button;
-    },
+    }
 
     clearButtons() {
         this.buttonLayout.destroy_all_children();
         this._buttonKeys = {};
-    },
+    }
 });
 
-var MessageDialogContent = new Lang.Class({
-    Name: 'MessageDialogContent',
-    Extends: St.BoxLayout,
+var MessageDialogContent = GObject.registerClass({
     Properties: {
         'icon': GObject.ParamSpec.object('icon', 'icon', 'icon',
                                          GObject.ParamFlags.READWRITE |
@@ -172,8 +167,8 @@ var MessageDialogContent = new Lang.Class({
                                          GObject.ParamFlags.READWRITE |
                                          GObject.ParamFlags.CONSTRUCT,
                                          null)
-    },
-
+    }
+}, class MessageDialogContent extends St.BoxLayout {
     _init(params) {
         this._icon = new St.Icon({ y_align: Clutter.ActorAlign.START });
         this._title = new St.Label({ style_class: 'headline' });
@@ -192,7 +187,7 @@ var MessageDialogContent = new Lang.Class({
         if (!params.hasOwnProperty('style_class'))
             params.style_class = 'message-dialog-main-layout';
 
-        this.parent(params);
+        super._init(params);
 
         this.messageBox = new St.BoxLayout({ style_class: 'message-dialog-content',
                                              x_expand: true,
@@ -204,45 +199,45 @@ var MessageDialogContent = new Lang.Class({
 
         this.add_actor(this._icon);
         this.add_actor(this.messageBox);
-    },
+    }
 
     get icon() {
         return this._icon.gicon;
-    },
+    }
 
     get title() {
         return this._title.text;
-    },
+    }
 
     get subtitle() {
         return this._subtitle.text;
-    },
+    }
 
     get body() {
         return this._body.text;
-    },
+    }
 
     set icon(icon) {
         Object.assign(this._icon, { gicon: icon, visible: icon != null });
         this.notify('icon');
-    },
+    }
 
     set title(title) {
         this._setLabel(this._title, 'title', title);
-    },
+    }
 
     set subtitle(subtitle) {
         this._setLabel(this._subtitle, 'subtitle', subtitle);
-    },
+    }
 
     set body(body) {
         this._setLabel(this._body, 'body', body);
-    },
+    }
 
     _setLabel(label, prop, value) {
         Object.assign(label, { text: value || '', visible: value != null });
         this.notify(prop);
-    },
+    }
 
     insertBeforeBody(actor) {
         this.messageBox.insert_child_below(actor, this._body);
index d49aa69d9735a1569fc3c7272b2bd62a15f4c2ae..ec94c1b42678611dc06f9b920930a91569af0572 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 
-const Lang = imports.lang;
+const GObject = imports.gi.GObject;
 const Signals = imports.signals;
 const Meta = imports.gi.Meta;
 const Clutter = imports.gi.Clutter;
@@ -11,26 +11,24 @@ const Main = imports.ui.main;
 var EDGE_THRESHOLD = 20;
 var DRAG_DISTANCE = 80;
 
-var EdgeDragAction = new Lang.Class({
-    Name: 'EdgeDragAction',
-    Extends: Clutter.GestureAction,
+var EdgeDragAction = GObject.registerClass({
     Signals: { 'activated': {} },
-
+}, class EdgeDragAction extends Clutter.GestureAction {
     _init(side, allowedModes) {
-        this.parent();
+        super._init();
         this._side = side;
         this._allowedModes = allowedModes;
         this.set_n_touch_points(1);
 
         global.display.connect('grab-op-begin', () => { this.cancel(); });
-    },
+    }
 
     _getMonitorRect(x, y) {
         let rect = new Meta.Rectangle({ x: x - 1, y: y - 1, width: 1, height: 1 });
         let monitorIndex = global.display.get_monitor_index_for_rect(rect);
 
         return global.display.get_monitor_geometry(monitorIndex);
-    },
+    }
 
     vfunc_gesture_prepare(action, actor) {
         if (this.get_n_current_points() == 0)
@@ -46,7 +44,7 @@ var EdgeDragAction = new Lang.Class({
                 (this._side == St.Side.RIGHT && x > monitorRect.x + monitorRect.width - EDGE_THRESHOLD) ||
                 (this._side == St.Side.TOP && y < monitorRect.y + EDGE_THRESHOLD) ||
                 (this._side == St.Side.BOTTOM && y > monitorRect.y + monitorRect.height - EDGE_THRESHOLD));
-    },
+    }
 
     vfunc_gesture_progress(action, actor) {
         let [startX, startY] = this.get_press_coords(0);
@@ -66,7 +64,7 @@ var EdgeDragAction = new Lang.Class({
         }
 
         return true;
-    },
+    }
 
     vfunc_gesture_end(action, actor) {
         let [startX, startY] = this.get_press_coords(0);
index 82b335cc530d97dbef8673f9c89c76ed0c566f4d..6d6e2284f33258d636cb69e8ad9ee49721d09740 100644 (file)
@@ -1,13 +1,13 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 
 const Clutter = imports.gi.Clutter;
+const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 const Signals = imports.signals;
 const St = imports.gi.St;
 
-const Lang = imports.lang;
 const Params = imports.misc.params;
 const Tweener = imports.ui.tweener;
 const Main = imports.ui.main;
@@ -34,10 +34,8 @@ var AnimationDirection = {
 var APPICON_ANIMATION_OUT_SCALE = 3;
 var APPICON_ANIMATION_OUT_TIME = 0.25;
 
-var BaseIcon = new Lang.Class({
-    Name: 'BaseIcon',
-    Extends: St.Bin,
-
+var BaseIcon = GObject.registerClass(
+class BaseIcon extends St.Bin {
     _init(label, params) {
         params = Params.parse(params, { createIcon: null,
                                         setSizeManually: false,
@@ -47,7 +45,7 @@ var BaseIcon = new Lang.Class({
         if (params.showLabel)
             styleClass += ' overview-icon-with-label';
 
-        this.parent({ style_class: styleClass,
+        super._init({ style_class: styleClass,
                       x_fill: true,
                       y_fill: true });
 
@@ -79,18 +77,18 @@ var BaseIcon = new Lang.Class({
 
         let cache = St.TextureCache.get_default();
         this._iconThemeChangedId = cache.connect('icon-theme-changed', this._onIconThemeChanged.bind(this));
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         // Return the actual height to keep the squared aspect
         return this.get_preferred_height(-1);
-    },
+    }
 
     // This can be overridden by a subclass, or by the createIcon
     // parameter to _init()
     createIcon(size) {
         throw new Error('no implementation of createIcon in ' + this);
-    },
+    }
 
     setIconSize(size) {
         if (!this._setSizeManually)
@@ -100,7 +98,7 @@ var BaseIcon = new Lang.Class({
             return;
 
         this._createIconTexture(size);
-    },
+    }
 
     _createIconTexture(size) {
         if (this.icon)
@@ -109,7 +107,7 @@ var BaseIcon = new Lang.Class({
         this.icon = this.createIcon(this.iconSize);
 
         this._iconBin.child = this.icon;
-    },
+    }
 
     vfunc_style_changed() {
         let node = this.get_theme_node();
@@ -126,7 +124,7 @@ var BaseIcon = new Lang.Class({
             return;
 
         this._createIconTexture(size);
-    },
+    }
 
     _onDestroy() {
         if (this._iconThemeChangedId > 0) {
@@ -134,11 +132,11 @@ var BaseIcon = new Lang.Class({
             cache.disconnect(this._iconThemeChangedId);
             this._iconThemeChangedId = 0;
         }
-    },
+    }
 
     _onIconThemeChanged() {
         this._createIconTexture(this.iconSize);
-    },
+    }
 
     animateZoomOut() {
         // Animate only the child instead of the entire actor, so the
@@ -187,14 +185,12 @@ function zoomOutActor(actor) {
                     });
 }
 
-var IconGrid = new Lang.Class({
-    Name: 'IconGrid',
-    Extends: St.Widget,
+var IconGrid = GObject.registerClass({
     Signals: {'animation-done': {},
               'child-focused': { param_types: [Clutter.Actor.$gtype]} },
-
+}, class IconGrid extends St.Widget {
     _init(params) {
-        this.parent({ style_class: 'icon-grid',
+        super._init({ style_class: 'icon-grid',
                       y_align: Clutter.ActorAlign.START });
 
         this.actor = this;
@@ -236,19 +232,19 @@ var IconGrid = new Lang.Class({
 
         this.connect('actor-added', this._childAdded.bind(this));
         this.connect('actor-removed', this._childRemoved.bind(this));
-    },
+    }
 
     _keyFocusIn(actor) {
         this.emit('child-focused', actor);
-    },
+    }
 
     _childAdded(grid, child) {
         child._iconGridKeyFocusInId = child.connect('key-focus-in', this._keyFocusIn.bind(this));
-    },
+    }
 
     _childRemoved(grid, child) {
         child.disconnect(child._iconGridKeyFocusInId);
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         if (this._fillParent)
@@ -268,11 +264,11 @@ var IconGrid = new Lang.Class({
         let natSize = nColumns * this._getHItemSize() + totalSpacing + this.leftPadding + this.rightPadding;
 
         return this.get_theme_node().adjust_preferred_width(minSize, natSize);
-    },
+    }
 
     _getVisibleChildren() {
         return this.get_children().filter(actor => actor.visible);
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         if (this._fillParent)
@@ -302,7 +298,7 @@ var IconGrid = new Lang.Class({
         let height = nRows * this._getVItemSize() + totalSpacing + this.topPadding + this.bottomPadding;
 
         return themeNode.adjust_preferred_height(height, height);
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -363,7 +359,7 @@ var IconGrid = new Lang.Class({
                 x += this._getHItemSize() + spacing;
             }
         }
-    },
+    }
 
     vfunc_get_paint_volume(paintVolume) {
         // Setting the paint volume does not make sense when we don't have
@@ -402,7 +398,7 @@ var IconGrid = new Lang.Class({
         }
 
         return true;
-    },
+    }
 
     /**
      * Intended to be override by subclasses if they need a different
@@ -410,12 +406,12 @@ var IconGrid = new Lang.Class({
      */
     _getChildrenToAnimate() {
         return this._getVisibleChildren();
-    },
+    }
 
     _cancelAnimation() {
         this._clonesAnimating.forEach(clone => { clone.destroy(); });
         this._clonesAnimating = [];
-    },
+    }
 
     _animationDone() {
         this._clonesAnimating.forEach(clone => {
@@ -425,7 +421,7 @@ var IconGrid = new Lang.Class({
         });
         this._clonesAnimating = [];
         this.emit('animation-done');
-    },
+    }
 
     animatePulse(animationDirection) {
         if (animationDirection != AnimationDirection.IN)
@@ -474,7 +470,7 @@ var IconGrid = new Lang.Class({
                               }
                             });
         }
-    },
+    }
 
     animateSpring(animationDirection, sourceActor) {
         this._cancelAnimation();
@@ -574,7 +570,7 @@ var IconGrid = new Lang.Class({
             Tweener.addTween(actorClone, movementParams);
             Tweener.addTween(actorClone, fadeParams);
         }
-    },
+    }
 
     _getAllocatedChildSizeAndSpacing(child) {
         let [,, natWidth, natHeight] = child.get_preferred_size();
@@ -583,7 +579,7 @@ var IconGrid = new Lang.Class({
         let height = Math.min(this._getVItemSize(), natHeight);
         let ySpacing = Math.max(0, height - natHeight) / 2;
         return [width, height, xSpacing, ySpacing];
-    },
+    }
 
     _calculateChildBox(child, x, y, box) {
         /* Center the item in its allocation horizontally */
@@ -601,15 +597,15 @@ var IconGrid = new Lang.Class({
         childBox.x2 = childBox.x1 + width;
         childBox.y2 = childBox.y1 + height;
         return childBox;
-    },
+    }
 
     columnsForWidth(rowWidth) {
         return this._computeLayout(rowWidth)[0];
-    },
+    }
 
     getRowLimit() {
         return this._rowLimit;
-    },
+    }
 
     _computeLayout(forWidth) {
         let nColumns = 0;
@@ -626,7 +622,7 @@ var IconGrid = new Lang.Class({
             usedWidth -= spacing;
 
         return [nColumns, usedWidth];
-    },
+    }
 
     _onStyleChanged() {
         let themeNode = this.get_theme_node();
@@ -634,7 +630,7 @@ var IconGrid = new Lang.Class({
         this._hItemSize = themeNode.get_length('-shell-grid-horizontal-item-size') || ICON_SIZE;
         this._vItemSize = themeNode.get_length('-shell-grid-vertical-item-size') || ICON_SIZE;
         this.queue_relayout();
-    },
+    }
 
     nRows(forWidth) {
         let children = this._getVisibleChildren();
@@ -643,35 +639,35 @@ var IconGrid = new Lang.Class({
         if (this._rowLimit)
             nRows = Math.min(nRows, this._rowLimit);
         return nRows;
-    },
+    }
 
     rowsForHeight(forHeight) {
         return Math.floor((forHeight - (this.topPadding + this.bottomPadding) + this._getSpacing()) / (this._getVItemSize() + this._getSpacing()));
-    },
+    }
 
     usedHeightForNRows(nRows) {
         return (this._getVItemSize() + this._getSpacing()) * nRows - this._getSpacing() + this.topPadding + this.bottomPadding;
-    },
+    }
 
     usedWidth(forWidth) {
         return this.usedWidthForNColumns(this.columnsForWidth(forWidth));
-    },
+    }
 
     usedWidthForNColumns(columns) {
         let usedWidth = columns  * (this._getHItemSize() + this._getSpacing());
         usedWidth -= this._getSpacing();
         return usedWidth + this.leftPadding + this.rightPadding;
-    },
+    }
 
     removeAll() {
         this._items = [];
         this.remove_all_children();
-    },
+    }
 
     destroyAll() {
         this._items = [];
         this.destroy_all_children();
-    },
+    }
 
     addItem(item, index) {
         if (!item.icon instanceof BaseIcon)
@@ -682,35 +678,35 @@ var IconGrid = new Lang.Class({
             this.insert_child_at_index(item.actor, index);
         else
             this.add_actor(item.actor);
-    },
+    }
 
     removeItem(item) {
         this.remove_child(item.actor);
-    },
+    }
 
     getItemAtIndex(index) {
         return this.get_child_at_index(index);
-    },
+    }
 
     visibleItemsCount() {
         return this.get_children().filter(c => c.is_visible()).length;
-    },
+    }
 
     setSpacing(spacing) {
         this._fixedSpacing = spacing;
-    },
+    }
 
     _getSpacing() {
         return this._fixedSpacing ? this._fixedSpacing : this._spacing;
-    },
+    }
 
     _getHItemSize() {
         return this._fixedHItemSize ? this._fixedHItemSize : this._hItemSize;
-    },
+    }
 
     _getVItemSize() {
         return this._fixedVItemSize ? this._fixedVItemSize : this._vItemSize;
-    },
+    }
 
     _updateSpacingForSize(availWidth, availHeight) {
         let maxEmptyVArea = availHeight - this._minRows * this._getVItemSize();
@@ -743,7 +739,7 @@ var IconGrid = new Lang.Class({
         this.setSpacing(spacing);
         if (this._padWithSpacing)
             this.topPadding = this.rightPadding = this.bottomPadding = this.leftPadding = spacing;
-    },
+    }
 
     /**
      * This function must to be called before iconGrid allocation,
@@ -768,7 +764,7 @@ var IconGrid = new Lang.Class({
         }
         Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
                        this._updateIconSizes.bind(this));
-    },
+    }
 
     // Note that this is ICON_SIZE as used by BaseIcon, not elsewhere in IconGrid; it's a bit messed up
     _updateIconSizes() {
@@ -780,25 +776,23 @@ var IconGrid = new Lang.Class({
     }
 });
 
-var PaginatedIconGrid = new Lang.Class({
-    Name: 'PaginatedIconGrid',
-    Extends: IconGrid,
+var PaginatedIconGrid = GObject.registerClass({
     Signals: {'space-opened': {},
               'space-closed': {} },
-
+}, class PaginatedIconGrid extends IconGrid {
     _init(params) {
-        this.parent(params);
+        super._init(params);
         this._nPages = 0;
         this.currentPage = 0;
         this._rowsPerPage = 0;
         this._spaceBetweenPages = 0;
         this._childrenPerPage = 0;
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         let height = (this._availableHeightPerPageForItems() + this.bottomPadding + this.topPadding) * this._nPages + this._spaceBetweenPages * this._nPages;
         return [height, height];
-    },
+    }
 
     vfunc_allocate(box, flags) {
          if (this._childrenPerPage == 0)
@@ -853,7 +847,7 @@ var PaginatedIconGrid = new Lang.Class({
             } else
                 x += this._getHItemSize() + spacing;
         }
-    },
+    }
 
     // Overriden from IconGrid
     _getChildrenToAnimate() {
@@ -862,7 +856,7 @@ var PaginatedIconGrid = new Lang.Class({
         let lastIndex = firstIndex + this._childrenPerPage;
 
         return children.slice(firstIndex, lastIndex);
-    },
+    }
 
     _computePages(availWidthPerPage, availHeightPerPage) {
         let [nColumns, usedWidth] = this._computeLayout(availWidthPerPage);
@@ -881,24 +875,24 @@ var PaginatedIconGrid = new Lang.Class({
         this._nPages = Math.ceil(nRows / this._rowsPerPage);
         this._spaceBetweenPages = availHeightPerPage - (this.topPadding + this.bottomPadding) - this._availableHeightPerPageForItems();
         this._childrenPerPage = nColumns * this._rowsPerPage;
-    },
+    }
 
     adaptToSize(availWidth, availHeight) {
-        this.parent(availWidth, availHeight);
+        super.adaptToSize(availWidth, availHeight);
         this._computePages(availWidth, availHeight);
-    },
+    }
 
     _availableHeightPerPageForItems() {
         return this.usedHeightForNRows(this._rowsPerPage) - (this.topPadding + this.bottomPadding);
-    },
+    }
 
     nPages() {
         return this._nPages;
-    },
+    }
 
     getPageHeight() {
         return this._availableHeightPerPageForItems();
-    },
+    }
 
     getPageY(pageNumber) {
         if (!this._nPages)
@@ -907,7 +901,7 @@ var PaginatedIconGrid = new Lang.Class({
         let firstPageItem = pageNumber * this._childrenPerPage
         let childBox = this._getVisibleChildren()[firstPageItem].get_allocation_box();
         return childBox.y1 - this.topPadding;
-    },
+    }
 
     getItemPage(item) {
         let children = this._getVisibleChildren();
@@ -917,7 +911,7 @@ var PaginatedIconGrid = new Lang.Class({
             return 0;
         }
         return Math.floor(index / this._childrenPerPage);
-    },
+    }
 
     /**
     * openExtraSpace:
@@ -969,7 +963,7 @@ var PaginatedIconGrid = new Lang.Class({
             this._translateChildren(childrenDown, Gtk.DirectionType.DOWN, nRowsDown);
             this._translatedChildren = childrenUp.concat(childrenDown);
         }
-    },
+    }
 
     _translateChildren(children, direction, nRows) {
         let translationY = nRows * (this._getVItemSize() + this._getSpacing());
@@ -989,7 +983,7 @@ var PaginatedIconGrid = new Lang.Class({
                 params.onComplete = () => { this.emit('space-opened'); };
             Tweener.addTween(children[i], params);
         }
-    },
+    }
 
     closeExtraSpace() {
         if (!this._translatedChildren || !this._translatedChildren.length) {
index 0db654336398f0f635a36833ea6c8ccac7728d70..16c96400d1b637e5f6400837c8bb955d83662081 100644 (file)
@@ -2,7 +2,6 @@ const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 const St = imports.gi.St;
@@ -16,41 +15,39 @@ const APP_WHITELIST = ['gnome-control-center.desktop'];
 
 var DialogResponse = Meta.InhibitShortcutsDialogResponse;
 
-var InhibitShortcutsDialog = new Lang.Class({
-    Name: 'InhibitShortcutsDialog',
-    Extends: GObject.Object,
+var InhibitShortcutsDialog = GObject.registerClass({
     Implements: [Meta.InhibitShortcutsDialog],
     Properties: {
         'window': GObject.ParamSpec.override('window', Meta.InhibitShortcutsDialog)
-    },
-
+    }
+}, class InhibitShortcutsDialog extends GObject.Object {
     _init(window) {
-        this.parent();
+        super._init();
         this._window = window;
 
         this._dialog = new ModalDialog.ModalDialog();
         this._buildLayout();
-    },
+    }
 
     get window() {
         return this._window;
-    },
+    }
 
     set window(window) {
         this._window = window;
-    },
+    }
 
     get _app() {
         let windowTracker = Shell.WindowTracker.get_default();
         return windowTracker.get_window_app(this._window);
-    },
+    }
 
     _getRestoreAccel() {
         let settings = new Gio.Settings({ schema_id: WAYLAND_KEYBINDINGS_SCHEMA });
         let accel = settings.get_strv('restore-shortcuts')[0] || '';
         return Gtk.accelerator_get_label.apply(null,
                                                Gtk.accelerator_parse(accel));
-    },
+    }
 
     _buildLayout() {
         let name = this._app ? this._app.get_name() : this._window.title;
@@ -82,19 +79,19 @@ var InhibitShortcutsDialog = new Lang.Class({
                                      this._emitResponse(DialogResponse.ALLOW);
                                  },
                                  default: true });
-    },
+    }
 
     _emitResponse(response) {
         this.emit('response', response);
         this._dialog.close();
-    },
+    }
 
     vfunc_show() {
         if (this._app && APP_WHITELIST.indexOf(this._app.get_id()) != -1)
             this._emitResponse(DialogResponse.ALLOW);
         else
             this._dialog.open();
-    },
+    }
 
     vfunc_hide() {
         this._dialog.close();
index 739e0883b56bd920960e6d0596ea6a156ad657cb..d789abac5636e385fe41db99a147f5d8709c9bd1 100644 (file)
@@ -1,7 +1,6 @@
 const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GObject = imports.gi.GObject;
-const Lang = imports.lang;
 const Dialog = imports.ui.dialog;
 const ModalDialog = imports.ui.modalDialog;
 
@@ -9,17 +8,17 @@ const KEYBOARD_A11Y_SCHEMA    = 'org.gnome.desktop.a11y.keyboard';
 const KEY_STICKY_KEYS_ENABLED = 'stickykeys-enable';
 const KEY_SLOW_KEYS_ENABLED   = 'slowkeys-enable';
 
-var KbdA11yDialog = new Lang.Class({
-    Name: 'KbdA11yDialog',
-    Extends: GObject.Object,
-
+var KbdA11yDialog = new GObject.registerClass(
+class KbdA11yDialog extends GObject.Object {
     _init() {
+        super._init();
+
         this._a11ySettings = new Gio.Settings({ schema_id: KEYBOARD_A11Y_SCHEMA });
 
         let deviceManager = Clutter.DeviceManager.get_default();
         deviceManager.connect('kbd-a11y-flags-changed',
                               this._showKbdA11yDialog.bind(this));
-    },
+    }
 
     _showKbdA11yDialog(deviceManager, newFlags, whatChanged) {
         let dialog = new ModalDialog.ModalDialog();
index 518379cbe884be1f09bd3f6f28fd30c381e19a98..8bd31c8e8f5dee10c4f20d97b6015f2dfe4eb501 100644 (file)
@@ -5,7 +5,6 @@ const Clutter = imports.gi.Clutter;
 const Gdk = imports.gi.Gdk;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
-const Lang = imports.lang;
 const GObject = imports.gi.GObject;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
@@ -56,15 +55,13 @@ const defaultKeysPost = [
       [{ width: 1.5, action: 'languageMenu', extraClassName: 'layout-key' }, { width: 1.5, action: 'hide', extraClassName: 'hide-key' }] ],
 ];
 
-var KeyContainer = new Lang.Class({
-    Name: 'KeyContainer',
-    Extends: St.Widget,
-
+var KeyContainer = new GObject.registerClass(
+class KeyContainer extends St.Widget {
     _init() {
         let gridLayout = new Clutter.GridLayout({ orientation: Clutter.Orientation.HORIZONTAL,
                                                   column_homogeneous: true,
                                                   row_homogeneous: true });
-        this.parent({ layout_manager: gridLayout });
+        super._init({ layout_manager: gridLayout });
         this._gridLayout = gridLayout;
         this._currentRow = 0;
         this._currentCol = 0;
@@ -72,7 +69,7 @@ var KeyContainer = new Lang.Class({
 
         this._currentRow = null;
         this._rows = [];
-    },
+    }
 
     appendRow(length) {
         this._currentRow++;
@@ -82,7 +79,7 @@ var KeyContainer = new Lang.Class({
         row.keys = [];
         row.width = 0;
         this._rows.push(row);
-    },
+    }
 
     appendKey(key, width = 1, height = 1) {
         let keyInfo = {
@@ -99,7 +96,7 @@ var KeyContainer = new Lang.Class({
 
         this._currentCol += width;
         this._maxCols = Math.max(this._currentCol, this._maxCols);
-    },
+    }
 
     vfunc_allocate(box, flags) {
         if (box.get_width() > 0 && box.get_height() > 0 && this._maxCols > 0) {
@@ -123,8 +120,8 @@ var KeyContainer = new Lang.Class({
             }
         }
 
-        this.parent (box, flags);
-    },
+        super.vfunc_allocate(box, flags);
+    }
 
     layoutButtons() {
         let nCol = 0, nRow = 0;
index 22b2807a9230dd611d408c1a7e970c3485d79201..5bf3ec573ab1ca3c1f24ce8d351595e00bdbc69a 100644 (file)
@@ -3,7 +3,6 @@
 const Clutter = imports.gi.Clutter;
 const GLib = imports.gi.GLib;
 const GObject = imports.gi.GObject;
-const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 const Signals = imports.signals;
@@ -36,9 +35,7 @@ function isPopupMetaWindow(actor) {
     }
 }
 
-var MonitorConstraint = new Lang.Class({
-    Name: 'MonitorConstraint',
-    Extends: Clutter.Constraint,
+var MonitorConstraint = GObject.registerClass({
     Properties: {'primary': GObject.ParamSpec.boolean('primary', 
                                                       'Primary', 'Track primary monitor',
                                                       GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
@@ -51,18 +48,18 @@ var MonitorConstraint = new Lang.Class({
                                                         'Work-area', 'Track monitor\'s work-area',
                                                         GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
                                                         false)},
-
+}, class MonitorConstraint extends Clutter.Constraint {
     _init(props) {
         this._primary = false;
         this._index = -1;
         this._workArea = false;
 
-        this.parent(props);
-    },
+        super._init(props);
+    }
 
     get primary() {
         return this._primary;
-    },
+    }
 
     set primary(v) {
         if (v)
@@ -71,11 +68,11 @@ var MonitorConstraint = new Lang.Class({
         if (this.actor)
             this.actor.queue_relayout();
         this.notify('primary');
-    },
+    }
 
     get index() {
         return this._index;
-    },
+    }
 
     set index(v) {
         this._primary = false;
@@ -83,11 +80,11 @@ var MonitorConstraint = new Lang.Class({
         if (this.actor)
             this.actor.queue_relayout();
         this.notify('index');
-    },
+    }
 
     get work_area() {
         return this._workArea;
-    },
+    }
 
     set work_area(v) {
         if (v == this._workArea)
@@ -96,7 +93,7 @@ var MonitorConstraint = new Lang.Class({
         if (this.actor)
             this.actor.queue_relayout();
         this.notify('work-area');
-    },
+    }
 
     vfunc_set_actor(actor) {
         if (actor) {
@@ -124,8 +121,8 @@ var MonitorConstraint = new Lang.Class({
             this._workareasChangedId = 0;
         }
 
-        this.parent(actor);
-    },
+        super.vfunc_set_actor(actor);
+    }
 
     vfunc_update_allocation(actor, actorBox) {
         if (!this._primary && this._index < 0)
@@ -173,17 +170,15 @@ const defaultParams = {
     affectsInputRegion: true
 };
 
-var LayoutManager = new Lang.Class({
-    Name: 'LayoutManager',
-    Extends: GObject.Object,
+var LayoutManager = GObject.registerClass({
     Signals: { 'hot-corners-changed': {},
                'startup-complete': {},
                'startup-prepared': {},
                'monitors-changed': {},
                'keyboard-visible-changed': { param_types: [GObject.TYPE_BOOLEAN] } },
-
+}, class LayoutManager extends GObject.Object {
     _init() {
-        this.parent();
+        super._init();
 
         this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
         this.monitors = [];
@@ -294,33 +289,33 @@ var LayoutManager = new Lang.Class({
                     Meta.Background.refresh_all();
                 });
         }
-    },
+    }
 
     // This is called by Main after everything else is constructed
     init() {
         Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
 
         this._loadBackground();
-    },
+    }
 
     showOverview() {
         this.overviewGroup.show();
 
         this._inOverview = true;
         this._updateVisibility();
-    },
+    }
 
     hideOverview() {
         this.overviewGroup.hide();
 
         this._inOverview = false;
         this._updateVisibility();
-    },
+    }
 
     _sessionUpdated() {
         this._updateVisibility();
         this._queueUpdateRegions();
-    },
+    }
 
     _updateMonitors() {
         let display = global.display;
@@ -358,7 +353,7 @@ var LayoutManager = new Lang.Class({
             this.primaryMonitor = null;
             this.bottomMonitor = null;
         }
-    },
+    }
 
     _updateHotCorners() {
         // destroy old hot corners
@@ -417,11 +412,11 @@ var LayoutManager = new Lang.Class({
         }
 
         this.emit('hot-corners-changed');
-    },
+    }
 
     _addBackgroundMenu(bgManager) {
         BackgroundMenu.addBackgroundMenu(bgManager.backgroundActor, this);
-    },
+    }
 
     _createBackgroundManager(monitorIndex) {
         let bgManager = new Background.BackgroundManager({ container: this._backgroundGroup,
@@ -432,7 +427,7 @@ var LayoutManager = new Lang.Class({
         this._addBackgroundMenu(bgManager);
 
         return bgManager;
-    },
+    }
 
     _showSecondaryBackgrounds() {
         for (let i = 0; i < this.monitors.length; i++) {
@@ -446,7 +441,7 @@ var LayoutManager = new Lang.Class({
                                    transition: 'easeOutQuad' });
             }
         }
-    },
+    }
 
     _updateBackgrounds() {
         let i;
@@ -465,13 +460,13 @@ var LayoutManager = new Lang.Class({
             if (i != this.primaryIndex && this._startingUp)
                 bgManager.backgroundActor.hide();
         }
-    },
+    }
 
     _updateKeyboardBox() {
         this.keyboardBox.set_position(this.keyboardMonitor.x,
                                       this.keyboardMonitor.y + this.keyboardMonitor.height);
         this.keyboardBox.set_size(this.keyboardMonitor.width, -1);
-    },
+    }
 
     _updateBoxes() {
         this.screenShieldGroup.set_position(0, 0);
@@ -484,7 +479,7 @@ var LayoutManager = new Lang.Class({
         this.panelBox.set_size(this.primaryMonitor.width, -1);
 
         this.keyboardIndex = this.primaryIndex;
-    },
+    }
 
     _panelBoxChanged() {
         this._updatePanelBarrier();
@@ -494,7 +489,7 @@ var LayoutManager = new Lang.Class({
             if (corner)
                 corner.setBarrierSize(size);
         });
-    },
+    }
 
     _updatePanelBarrier() {
         if (this._rightPanelBarrier) {
@@ -513,7 +508,7 @@ var LayoutManager = new Lang.Class({
                                                          x2: primary.x + primary.width, y2: primary.y + this.panelBox.height,
                                                          directions: Meta.BarrierDirection.NEGATIVE_X });
         }
-    },
+    }
 
     _monitorsChanged() {
         this._updateMonitors();
@@ -525,7 +520,7 @@ var LayoutManager = new Lang.Class({
         this._queueUpdateRegions();
 
         this.emit('monitors-changed');
-    },
+    }
 
     _isAboveOrBelowPrimary(monitor) {
         let primary = this.monitors[this.primaryIndex];
@@ -539,16 +534,16 @@ var LayoutManager = new Lang.Class({
             return true;
 
         return false;
-    },
+    }
 
     get currentMonitor() {
         let index = global.display.get_current_monitor();
         return this.monitors[index];
-    },
+    }
 
     get keyboardMonitor() {
         return this.monitors[this.keyboardIndex];
-    },
+    }
 
     get focusIndex() {
         let i = Main.layoutManager.primaryIndex;
@@ -558,22 +553,22 @@ var LayoutManager = new Lang.Class({
         else if (global.display.focus_window != null)
             i = global.display.focus_window.get_monitor();
         return i;
-    },
+    }
 
     get focusMonitor() {
         if (this.focusIndex < 0)
             return null;
         return this.monitors[this.focusIndex];
-    },
+    }
 
     set keyboardIndex(v) {
         this._keyboardIndex = v;
         this._updateKeyboardBox();
-    },
+    }
 
     get keyboardIndex() {
         return this._keyboardIndex;
-    },
+    }
 
     _loadBackground() {
         if (!this.primaryMonitor) {
@@ -596,7 +591,7 @@ var LayoutManager = new Lang.Class({
 
             this._prepareStartupAnimation();
         });
-    },
+    }
 
     // Startup Animations
     //
@@ -662,7 +657,7 @@ var LayoutManager = new Lang.Class({
             return GLib.SOURCE_REMOVE;
         });
         GLib.Source.set_name_by_id(id, '[gnome-shell] this._startupAnimation');
-    },
+    }
 
     _startupAnimation() {
         if (Meta.is_restart())
@@ -671,7 +666,7 @@ var LayoutManager = new Lang.Class({
             this._startupAnimationGreeter();
         else
             this._startupAnimationSession();
-    },
+    }
 
     _startupAnimationGreeter() {
         Tweener.addTween(this.panelBox,
@@ -680,7 +675,7 @@ var LayoutManager = new Lang.Class({
                            transition: 'easeOutQuad',
                            onComplete: this._startupAnimationComplete,
                            onCompleteScope: this });
-    },
+    }
 
     _startupAnimationSession() {
         Tweener.addTween(this.uiGroup,
@@ -691,7 +686,7 @@ var LayoutManager = new Lang.Class({
                            transition: 'easeOutQuad',
                            onComplete: this._startupAnimationComplete,
                            onCompleteScope: this });
-    },
+    }
 
     _startupAnimationComplete() {
         this._coverPane.destroy();
@@ -712,7 +707,7 @@ var LayoutManager = new Lang.Class({
         this._queueUpdateRegions();
 
         this.emit('startup-complete');
-    },
+    }
 
     showKeyboard() {
         this.keyboardBox.show();
@@ -725,7 +720,7 @@ var LayoutManager = new Lang.Class({
                            onCompleteScope: this
                          });
         this.emit('keyboard-visible-changed', true);
-    },
+    }
 
     _showKeyboardComplete() {
         // Poke Chrome to update the input shape; it doesn't notice
@@ -735,7 +730,7 @@ var LayoutManager = new Lang.Class({
         this._keyboardHeightNotifyId = this.keyboardBox.connect('notify::height', () => {
             this.keyboardBox.anchor_y = this.keyboardBox.height;
         });
-    },
+    }
 
     hideKeyboard(immediate) {
         if (this._keyboardHeightNotifyId) {
@@ -752,12 +747,12 @@ var LayoutManager = new Lang.Class({
                          });
 
         this.emit('keyboard-visible-changed', false);
-    },
+    }
 
     _hideKeyboardComplete() {
         this.keyboardBox.hide();
         this._updateRegions();
-    },
+    }
 
     // setDummyCursorGeometry:
     //
@@ -772,7 +767,7 @@ var LayoutManager = new Lang.Class({
     setDummyCursorGeometry(x, y, w, h) {
         this.dummyCursor.set_position(Math.round(x), Math.round(y));
         this.dummyCursor.set_size(Math.round(w), Math.round(h));
-    },
+    }
 
     // addChrome:
     // @actor: an actor to add to the chrome
@@ -798,7 +793,7 @@ var LayoutManager = new Lang.Class({
         if (this.uiGroup.contains(global.top_window_group))
             this.uiGroup.set_child_below_sibling(actor, global.top_window_group);
         this._trackActor(actor, params);
-    },
+    }
 
     // trackChrome:
     // @actor: a descendant of the chrome to begin tracking
@@ -830,7 +825,7 @@ var LayoutManager = new Lang.Class({
         }
 
         this._trackActor(actor, params);
-    },
+    }
 
     // untrackChrome:
     // @actor: an actor previously tracked via trackChrome()
@@ -838,7 +833,7 @@ var LayoutManager = new Lang.Class({
     // Undoes the effect of trackChrome()
     untrackChrome(actor) {
         this._untrackActor(actor);
-    },
+    }
 
     // removeChrome:
     // @actor: a chrome actor
@@ -847,7 +842,7 @@ var LayoutManager = new Lang.Class({
     removeChrome(actor) {
         this.uiGroup.remove_actor(actor);
         this._untrackActor(actor);
-    },
+    }
 
     _findActor(actor) {
         for (let i = 0; i < this._trackedActors.length; i++) {
@@ -856,7 +851,7 @@ var LayoutManager = new Lang.Class({
                 return i;
         }
         return -1;
-    },
+    }
 
     _trackActor(actor, params) {
         if (this._findActor(actor) != -1)
@@ -876,7 +871,7 @@ var LayoutManager = new Lang.Class({
         this._trackedActors.push(actorData);
         this._updateActorVisibility(actorData);
         this._queueUpdateRegions();
-    },
+    }
 
     _untrackActor(actor) {
         let i = this._findActor(actor);
@@ -891,7 +886,7 @@ var LayoutManager = new Lang.Class({
         actor.disconnect(actorData.destroyId);
 
         this._queueUpdateRegions();
-    },
+    }
 
     _updateActorVisibility(actorData) {
         if (!actorData.trackFullscreen)
@@ -901,7 +896,7 @@ var LayoutManager = new Lang.Class({
         actorData.actor.visible = !(global.window_group.visible &&
                                     monitor &&
                                     monitor.inFullscreen);
-    },
+    }
 
     _updateVisibility() {
         let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
@@ -910,7 +905,7 @@ var LayoutManager = new Lang.Class({
         global.top_window_group.visible = windowsVisible;
 
         this._trackedActors.forEach(this._updateActorVisibility.bind(this));
-    },
+    }
 
     getWorkAreaForMonitor(monitorIndex) {
         // Assume that all workspaces will have the same
@@ -918,7 +913,7 @@ var LayoutManager = new Lang.Class({
         let workspaceManager = global.workspace_manager;
         let ws = workspaceManager.get_workspace_by_index(0);
         return ws.get_work_area_for_monitor(monitorIndex);
-    },
+    }
 
     // This call guarantees that we return some monitor to simplify usage of it
     // In practice all tracked actors should be visible on some monitor anyway
@@ -927,14 +922,14 @@ var LayoutManager = new Lang.Class({
         let [w, h] = actor.get_transformed_size();
         let rect = new Meta.Rectangle({ x: x, y: y, width: w, height: h });
         return global.display.get_monitor_index_for_rect(rect);
-    },
+    }
 
     findMonitorForActor(actor) {
         let index = this.findIndexForActor(actor);
         if (index >= 0 && index < this.monitors.length)
             return this.monitors[index];
         return null;
-    },
+    }
 
     _queueUpdateRegions() {
         if (this._startingUp)
@@ -943,19 +938,19 @@ var LayoutManager = new Lang.Class({
         if (!this._updateRegionIdle)
             this._updateRegionIdle = Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
                                                     this._updateRegions.bind(this));
-    },
+    }
 
     _getWindowActorsForWorkspace(workspace) {
         return global.get_window_actors().filter(actor => {
             let win = actor.meta_window;
             return win.located_on_workspace(workspace);
         });
-    },
+    }
 
     _updateFullscreen() {
         this._updateVisibility();
         this._queueUpdateRegions();
-    },
+    }
 
     _windowsRestacked() {
         let changed = false;
@@ -967,7 +962,7 @@ var LayoutManager = new Lang.Class({
             this._updateVisibility();
             this._queueUpdateRegions();
         }
-    },
+    }
 
     _updateRegions() {
         if (this._updateRegionIdle) {
@@ -1067,13 +1062,13 @@ var LayoutManager = new Lang.Class({
         }
 
         return GLib.SOURCE_REMOVE;
-    },
+    }
 
     modalEnded() {
         // We don't update the stage input region while in a modal,
         // so queue an update now.
         this._queueUpdateRegions();
-    },
+    }
 });
 
 
index 120aafd6f002b12310bef6431c66fbdd133f3bba..920f1d3a0249a5de26ef92d979193458c6fd3fd5 100644 (file)
@@ -1,7 +1,7 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 
 const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
+const GObject = imports.gi.GObject;
 const Meta = imports.gi.Meta;
 const Signals = imports.signals;
 const St = imports.gi.St;
@@ -27,38 +27,36 @@ t = clamp(t, 0.0, 1.0);\n\
 float pixel_brightness = mix(1.0, 1.0 - vignette_sharpness, t);\n\
 cogl_color_out.a = cogl_color_out.a * (1 - pixel_brightness * brightness);';
 
-var RadialShaderQuad = new Lang.Class({
-    Name: 'RadialShaderQuad',
-    Extends: Shell.GLSLQuad,
-
+var RadialShaderQuad = GObject.registerClass(
+class RadialShaderQuad extends Shell.GLSLQuad {
     _init(params) {
-        this.parent(params);
+        super._init(params);
 
         this._brightnessLocation = this.get_uniform_location('brightness');
         this._sharpnessLocation = this.get_uniform_location('vignette_sharpness');
 
         this.brightness = 1.0;
         this.vignetteSharpness = 0.0;
-    },
+    }
 
     vfunc_build_pipeline() {
         this.add_glsl_snippet(Shell.SnippetHook.FRAGMENT,
                               VIGNETTE_DECLARATIONS, VIGNETTE_CODE, true);
-    },
+    }
 
     get brightness() {
         return this._brightness;
-    },
+    }
 
     set brightness(v) {
         this._brightness = v;
         this.set_uniform_float(this._brightnessLocation,
                                1, [this._brightness]);
-    },
+    }
 
     get vignetteSharpness() {
         return this._sharpness;
-    },
+    }
 
     set vignetteSharpness(v) {
         this._sharpness = v;
index 26e21c4ee6527f5629829fa21d550f0b533217de..ce1402149831a4675aadc695ed631c04383b1804 100644 (file)
@@ -11,7 +11,6 @@ const Pango = imports.gi.Pango;
 const St = imports.gi.St;
 const Shell = imports.gi.Shell;
 const Signals = imports.signals;
-const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const System = imports.system;
 
@@ -462,10 +461,8 @@ var ObjInspector = class ObjInspector {
     }
 };
 
-var RedBorderEffect = new Lang.Class({
-    Name: 'RedBorderEffect',
-    Extends: Clutter.Effect,
-
+var RedBorderEffect = GObject.registerClass(
+class RedBorderEffect extends Clutter.Effect {
     vfunc_paint() {
         let actor = this.get_actor();
         actor.continue_paint();
@@ -485,17 +482,15 @@ var RedBorderEffect = new Lang.Class({
                        geom.width - width, geom.height - width);
         Cogl.rectangle(0, geom.height - width,
                        width, width);
-    },
+    }
 });
 
-var Inspector = new Lang.Class({
-    Name: 'Inspector',
-    Extends: Clutter.Actor,
+var Inspector = GObject.registerClass({
     Signals: { 'closed': {},
                'target': { param_types: [Clutter.Actor.$gtype, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] } },
-
+}, class Inspector extends Clutter.Actor {
     _init(lookingGlass) {
-        this.parent({ width: 0,
+        super._init({ width: 0,
                       height: 0 });
 
         Main.uiGroup.add_actor(this);
@@ -524,7 +519,7 @@ var Inspector = new Lang.Class({
         this._pointerTarget = null;
 
         this._lookingGlass = lookingGlass;
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -543,7 +538,7 @@ var Inspector = new Lang.Class({
         childBox.y1 = primary.y + Math.floor((primary.height - natHeight) / 2);
         childBox.y2 = childBox.y1 + natHeight;
         this._eventHandler.allocate(childBox, flags);
-    },
+    }
 
     _close() {
         Clutter.ungrab_pointer();
@@ -551,13 +546,13 @@ var Inspector = new Lang.Class({
         this._eventHandler.destroy();
         this._eventHandler = null;
         this.emit('closed');
-    },
+    }
 
     _onKeyPressEvent(actor, event) {
         if (event.get_key_symbol() == Clutter.Escape)
             this._close();
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _onButtonPressEvent(actor, event) {
         if (this._target) {
@@ -566,7 +561,7 @@ var Inspector = new Lang.Class({
         }
         this._close();
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _onScrollEvent(actor, event) {
         switch (event.get_scroll_direction()) {
@@ -600,12 +595,12 @@ var Inspector = new Lang.Class({
             break;
         }
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _onMotionEvent(actor, event) {
         this._update(event);
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _update(event) {
         let [stageX, stageY] = event.get_coords();
index f8ef745d4652ba4f0b1e64ebb8bec76ab69f9b89..510f1b007dcf30a24b82e885183f0a4add3ae971 100644 (file)
@@ -3,7 +3,6 @@ const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
 const GObject = imports.gi.GObject;
-const Lang = imports.lang;
 const Main = imports.ui.main;
 const MessageTray = imports.ui.messageTray;
 const Meta = imports.gi.Meta;
@@ -160,14 +159,12 @@ var URLHighlighter = class URLHighlighter {
     }
 };
 
-var ScaleLayout = new Lang.Class({
-    Name: 'ScaleLayout',
-    Extends: Clutter.BinLayout,
-
+var ScaleLayout = new GObject.registerClass(
+class ScaleLayout extends Clutter.BinLayout {
     _init(params) {
         this._container = null;
-        this.parent(params);
-    },
+        super._init(params);
+    }
 
     _connectContainer(container) {
         if (this._container == container)
@@ -187,45 +184,43 @@ var ScaleLayout = new Lang.Class({
                 });
                 this._signals.push(id);
             }
-    },
+    }
 
     vfunc_get_preferred_width(container, forHeight) {
         this._connectContainer(container);
 
-        let [min, nat] = this.parent(container, forHeight);
+        let [min, nat] = super.vfunc_get_preferred_width(container, forHeight);
         return [Math.floor(min * container.scale_x),
                 Math.floor(nat * container.scale_x)];
-    },
+    }
 
     vfunc_get_preferred_height(container, forWidth) {
         this._connectContainer(container);
 
-        let [min, nat] = this.parent(container, forWidth);
+        let [min, nat] = super.vfunc_get_preferred_height(container, forWidth);
         return [Math.floor(min * container.scale_y),
                 Math.floor(nat * container.scale_y)];
     }
 });
 
-var LabelExpanderLayout = new Lang.Class({
-    Name: 'LabelExpanderLayout',
-    Extends: Clutter.LayoutManager,
+var LabelExpanderLayout = GObject.registerClass({
     Properties: { 'expansion': GObject.ParamSpec.double('expansion',
                                                         'Expansion',
                                                         'Expansion of the layout, between 0 (collapsed) ' +
                                                         'and 1 (fully expanded',
                                                          GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
                                                          0, 1, 0)},
-
+}, class LabelExpanderLayout extends Clutter.LayoutManager {
     _init(params) {
         this._expansion = 0;
         this._expandLines = DEFAULT_EXPAND_LINES;
 
-        this.parent(params);
-    },
+        super._init(params);
+    }
 
     get expansion() {
         return this._expansion;
-    },
+    }
 
     set expansion(v) {
         if (v == this._expansion)
@@ -238,7 +233,7 @@ var LabelExpanderLayout = new Lang.Class({
             this._container.get_child_at_index(i).visible = (i == visibleIndex);
 
         this.layout_changed();
-    },
+    }
 
     set expandLines(v) {
         if (v == this._expandLines)
@@ -246,11 +241,11 @@ var LabelExpanderLayout = new Lang.Class({
         this._expandLines = v;
         if (this._expansion > 0)
             this.layout_changed();
-    },
+    }
 
     vfunc_set_container(container) {
         this._container = container;
-    },
+    }
 
     vfunc_get_preferred_width(container, forHeight) {
         let [min, nat] = [0, 0];
@@ -265,7 +260,7 @@ var LabelExpanderLayout = new Lang.Class({
         }
 
         return [min, nat];
-    },
+    }
 
     vfunc_get_preferred_height(container, forWidth) {
         let [min, nat] = [0, 0];
@@ -283,7 +278,7 @@ var LabelExpanderLayout = new Lang.Class({
         }
 
         return [min, nat];
-    },
+    }
 
     vfunc_allocate(container, box, flags) {
         for (let i = 0; i < container.get_n_children(); i++) {
index ebc7ae2fc93d5d0188e80ada5ad6b00e0320493e..0fd739834ae4126ef2a25570db8a743c13cfdb40 100644 (file)
@@ -6,7 +6,6 @@ const Gio = imports.gi.Gio;
 const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
 const Atk = imports.gi.Atk;
-const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Pango = imports.gi.Pango;
@@ -568,12 +567,10 @@ class NotificationBanner extends Calendar.NotificationMessage {
     }
 };
 
-var SourceActor = new Lang.Class({
-    Name: 'SourceActor',
-    Extends: St.Widget,
-
+var SourceActor = GObject.registerClass(
+class SourceActor extends St.Widget {
     _init(source, size) {
-        this.parent();
+        super._init();
 
         this._source = source;
         this._size = size;
@@ -595,12 +592,12 @@ var SourceActor = new Lang.Class({
 
         this._iconUpdatedId = this._source.connect('icon-updated', this._updateIcon.bind(this));
         this._updateIcon();
-    },
+    }
 
     setIcon(icon) {
         this._iconBin.child = icon;
         this._iconSet = true;
-    },
+    }
 
     _updateIcon() {
         if (this._actorDestroyed)
@@ -611,12 +608,10 @@ var SourceActor = new Lang.Class({
     }
 });
 
-var SourceActorWithLabel = new Lang.Class({
-    Name: 'SourceActorWithLabel',
-    Extends: SourceActor,
-
+var SourceActorWithLabel = GObject.registerClass(
+class SourceActorWithLabel extends SourceActor {
     _init(source, size) {
-        this.parent(source, size);
+        super._init(source, size);
 
         this._counterLabel = new St.Label({ x_align: Clutter.ActorAlign.CENTER,
                                             x_expand: true,
@@ -642,10 +637,10 @@ var SourceActorWithLabel = new Lang.Class({
         this.connect('destroy', () => {
             this._source.disconnect(this._countUpdatedId);
         });
-    },
+    }
 
     vfunc_allocate(box, flags) {
-        this.parent(box, flags);
+        super.vfunc_allocate(box, flags);
 
         let childBox = new Clutter.ActorBox();
 
@@ -666,7 +661,7 @@ var SourceActorWithLabel = new Lang.Class({
         childBox.y2 = box.y2;
 
         this._counterBin.allocate(childBox, flags);
-    },
+    }
 
     _updateCount() {
         if (this._actorDestroyed)
index 557fe1d4b658dc3e660b8e4ac2be1dc156097562..018d4f660a9b19f312f993f498a9c23e71b38d9c 100644 (file)
@@ -2,10 +2,10 @@
 
 const Clutter = imports.gi.Clutter;
 const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
 const St = imports.gi.St;
 
 const BarLevel = imports.ui.barLevel;
-const Lang = imports.lang;
 const Layout = imports.ui.layout;
 const Main = imports.ui.main;
 const Mainloop = imports.mainloop;
@@ -49,20 +49,18 @@ var LevelBar = class extends BarLevel.BarLevel {
     }
 };
 
-var OsdWindowConstraint = new Lang.Class({
-    Name: 'OsdWindowConstraint',
-    Extends: Clutter.Constraint,
-
+var OsdWindowConstraint = GObject.registerClass(
+class OsdWindowConstraint extends Clutter.Constraint {
     _init(props) {
         this._minSize = 0;
-        this.parent(props);
-    },
+        super._init(props);
+    }
 
     set minSize(v) {
         this._minSize = v;
         if (this.actor)
             this.actor.queue_relayout();
-    },
+    }
 
     vfunc_update_allocation(actor, actorBox) {
         // Clutter will adjust the allocation for margins,
index d57c27ac2a32af2bf024fb453f856d8fbc41aea6..3cf3544230230f5b4734ba84f63eb0020910d61f 100644 (file)
@@ -2,7 +2,6 @@
 
 const GObject = imports.gi.GObject;
 const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const St = imports.gi.St;
 const Shell = imports.gi.Shell;
@@ -30,17 +29,15 @@ var SlideDirection = {
     RIGHT: 1
 };
 
-var SlideLayout = new Lang.Class({
-    Name: 'SlideLayout',
-    Extends: Clutter.FixedLayout,
-
+var SlideLayout = GObject.registerClass(
+class SlideLayout extends Clutter.FixedLayout {
     _init(params) {
         this._slideX = 1;
         this._translationX = undefined;
         this._direction = SlideDirection.LEFT;
 
-        this.parent(params);
-    },
+        super._init(params);
+    }
 
     vfunc_get_preferred_width(container, forHeight) {
         let child = container.get_first_child();
@@ -51,7 +48,7 @@ var SlideLayout = new Lang.Class({
         natWidth *= this._slideX;
 
         return [minWidth, natWidth];
-    },
+    }
 
     vfunc_allocate(container, box, flags) {
         let child = container.get_first_child();
@@ -74,34 +71,34 @@ var SlideLayout = new Lang.Class({
         actorBox.y2 = actorBox.y1 + availHeight;
 
         child.allocate(actorBox, flags);
-    },
+    }
 
     set slideX(value) {
         this._slideX = value;
         this.layout_changed();
-    },
+    }
 
     get slideX() {
         return this._slideX;
-    },
+    }
 
     set slideDirection(direction) {
         this._direction = direction;
         this.layout_changed();
-    },
+    }
 
     get slideDirection() {
         return this._direction;
-    },
+    }
 
     set translationX(value) {
         this._translationX = value;
         this.layout_changed();
-    },
+    }
 
     get translationX() {
         return this._translationX;
-    },
+    }
 });
 
 var SlidingControl = class {
@@ -354,15 +351,13 @@ var DashSlider = class extends SlidingControl {
     }
 };
 
-var DashSpacer = new Lang.Class({
-    Name: 'DashSpacer',
-    Extends: St.Widget,
-
+var DashSpacer = GObject.registerClass(
+class DashSpacer extends St.Widget {
     _init(params) {
-        this.parent(params);
+        super._init(params);
 
         this._bindConstraint = null;
-    },
+    }
 
     setDashActor(dashActor) {
         if (this._bindConstraint) {
@@ -375,30 +370,28 @@ var DashSpacer = new Lang.Class({
                                                                 coordinate: Clutter.BindCoordinate.SIZE });
             this.add_constraint(this._bindConstraint);
         }
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         let box = this.get_allocation_box();
-        let minWidth = this.parent(forHeight)[0];
+        let minWidth = super.vfunc_get_preferred_width(forHeight)[0];
         let natWidth = box.x2 - box.x1;
         return [minWidth, natWidth];
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         let box = this.get_allocation_box();
-        let minHeight = this.parent(forWidth)[0];
+        let minHeight = super.vfunc_get_preferred_height(forWidth)[0];
         let natHeight = box.y2 - box.y1;
         return [minHeight, natHeight];
     }
 });
 
-var ControlsLayout = new Lang.Class({
-    Name: 'ControlsLayout',
-    Extends: Clutter.BinLayout,
+var ControlsLayout = GObject.registerClass({
     Signals: { 'allocation-changed': { flags: GObject.SignalFlags.RUN_LAST } },
-
+}, class ControlsLayout extends Clutter.BinLayout {
     vfunc_allocate(container, box, flags) {
-        this.parent(container, box, flags);
+        super.vfunc_allocate(container, box, flags);
         this.emit('allocation-changed');
     }
 });
index 79b3eeb7946e7d3b6f45c1920a6fbaedc6ad0332..2cc449d9fdc547c62cf3f299d2221edc91d39207 100644 (file)
@@ -1,6 +1,5 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 
-const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 const Clutter = imports.gi.Clutter;
@@ -285,9 +284,7 @@ var ActionEditor = class {
 };
 Signals.addSignalMethods(ActionEditor.prototype);
 
-var PadDiagram = new Lang.Class({
-    Name: 'PadDiagram',
-    Extends: St.DrawingArea,
+var PadDiagram = GObject.registerClass({
     Properties: { 'left-handed': GObject.ParamSpec.boolean('left-handed',
                                                            'left-handed', 'Left handed',
                                                            GObject.ParamFlags.READWRITE |
@@ -303,7 +300,7 @@ var PadDiagram = new Lang.Class({
                                                            GObject.ParamFlags.READWRITE |
                                                            GObject.ParamFlags.CONSTRUCT_ONLY,
                                                            Clutter.Actor.$gtype) },
-
+}, class PadDiagram extends St.DrawingArea {
     _init(params) {
         let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css');
         let [success, css, etag] = file.load_contents(null);
@@ -314,20 +311,20 @@ var PadDiagram = new Lang.Class({
         this._css = css;
         this._labels = [];
         this._activeButtons = [];
-        this.parent(params);
-    },
+        super._init(params);
+    }
 
     get left_handed() {
         return this._leftHanded;
-    },
+    }
 
     set left_handed(leftHanded) {
         this._leftHanded = leftHanded;
-    },
+    }
 
     get image() {
         return this._imagePath;
-    },
+    }
 
     set image(imagePath) {
         let originalHandle = Rsvg.Handle.new_from_file(imagePath);
@@ -337,17 +334,17 @@ var PadDiagram = new Lang.Class({
 
         this._imagePath = imagePath;
         this._handle = this._composeStyledDiagram();
-    },
+    }
 
     get editor_actor() {
         return this._editorActor;
-    },
+    }
 
     set editor_actor(actor) {
         actor.hide();
         this._editorActor = actor;
         this.add_actor(actor);
-    },
+    }
 
     _wrappingSvgHeader() {
         return ('<?xml version="1.0" encoding="UTF-8" standalone="no"?>' +
@@ -355,13 +352,13 @@ var PadDiagram = new Lang.Class({
                 'xmlns:xi="http://www.w3.org/2001/XInclude" ' +
                 'width="' + this._imageWidth + '" height="' + this._imageHeight + '"> ' +
                 '<style type="text/css">');
-    },
+    }
 
     _wrappingSvgFooter() {
         return ('</style>' +
                 '<xi:include href="' + this._imagePath + '" />' +
                 '</svg>');
-    },
+    }
 
     _cssString() {
         let css = this._css;
@@ -375,7 +372,7 @@ var PadDiagram = new Lang.Class({
         }
 
         return css;
-    },
+    }
 
     _composeStyledDiagram() {
         let svgData = '';
@@ -393,7 +390,7 @@ var PadDiagram = new Lang.Class({
         handle.close();
 
         return handle;
-    },
+    }
 
     _updateDiagramScale() {
         if (this._handle == null)
@@ -404,7 +401,7 @@ var PadDiagram = new Lang.Class({
         let scaleX = this._actorWidth / dimensions.width;
         let scaleY = this._actorHeight / dimensions.height;
         this._scale = Math.min(scaleX, scaleY);
-    },
+    }
 
     _allocateChild(child, x, y, direction) {
         let [prefHeight, natHeight] = child.get_preferred_height(-1);
@@ -422,10 +419,10 @@ var PadDiagram = new Lang.Class({
         childBox.y1 = y - natHeight / 2;
         childBox.y2 = y + natHeight / 2;
         child.allocate(childBox, 0);
-    },
+    }
 
     vfunc_allocate(box, flags) {
-        this.parent(box, flags);
+        super.vfunc_allocate(box, flags);
         this._updateDiagramScale();
 
         for (let i = 0; i < this._labels.length; i++) {
@@ -439,7 +436,7 @@ var PadDiagram = new Lang.Class({
             let [found, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
             this._allocateChild(this._editorActor, x, y, arrangement);
         }
-    },
+    }
 
     vfunc_repaint() {
         if (this._handle == null)
@@ -461,7 +458,7 @@ var PadDiagram = new Lang.Class({
         this._handle.render_cairo(cr);
         cr.restore();
         cr.$dispose();
-    },
+    }
 
     _transformPoint(x, y) {
         if (this._handle == null || this._scale == null)
@@ -472,7 +469,7 @@ var PadDiagram = new Lang.Class({
         x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale;
         y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;;
         return [Math.round(x), Math.round(y)];
-    },
+    }
 
     _getItemLabelCoords(labelName, leaderName) {
         if (this._handle == null)
@@ -504,7 +501,7 @@ var PadDiagram = new Lang.Class({
         let [x, y] = this._transformPoint(pos.x, pos.y)
 
         return [true, x, y, direction];
-    },
+    }
 
     getButtonLabelCoords(button) {
         let ch = String.fromCharCode('A'.charCodeAt() + button);
@@ -512,7 +509,7 @@ var PadDiagram = new Lang.Class({
         let leaderName = 'Leader' + ch;
 
         return this._getItemLabelCoords(labelName, leaderName);
-    },
+    }
 
     getRingLabelCoords(number, dir) {
         let numStr = number > 0 ? (number + 1).toString() : '';
@@ -521,7 +518,7 @@ var PadDiagram = new Lang.Class({
         let leaderName = 'LeaderRing' + numStr + dirStr;
 
         return this._getItemLabelCoords(labelName, leaderName);
-    },
+    }
 
     getStripLabelCoords(number, dir) {
         let numStr = number > 0 ? (number + 1).toString() : '';
@@ -530,7 +527,7 @@ var PadDiagram = new Lang.Class({
         let leaderName = 'LeaderStrip' + numStr + dirStr;
 
         return this._getItemLabelCoords(labelName, leaderName);
-    },
+    }
 
     getLabelCoords(action, idx, dir) {
         if (action == Meta.PadActionType.BUTTON)
@@ -541,19 +538,19 @@ var PadDiagram = new Lang.Class({
             return this.getStripLabelCoords(idx, dir);
 
         return [false];
-    },
+    }
 
     _invalidateSvg() {
         if (this._handle == null)
             return;
         this._handle = this._composeStyledDiagram();
         this.queue_repaint();
-    },
+    }
 
     activateButton(button) {
         this._activeButtons.push(button);
         this._invalidateSvg();
-    },
+    }
 
     deactivateButton(button) {
         for (let i = 0; i < this._activeButtons.length; i++) {
@@ -561,12 +558,12 @@ var PadDiagram = new Lang.Class({
                 this._activeButtons.splice(i, 1);
         }
         this._invalidateSvg();
-    },
+    }
 
     addLabel(label, type, idx, dir) {
         this._labels.push([label, type, idx, dir]);
         this.add_actor(label);
-    },
+    }
 
     _applyLabel(label, action, idx, dir, str) {
         if (str != null) {
@@ -576,7 +573,7 @@ var PadDiagram = new Lang.Class({
             this._allocateChild(label, x, y, arrangement);
         }
         label.show();
-    },
+    }
 
     stopEdition(continues, str) {
         this._editorActor.hide();
@@ -594,7 +591,7 @@ var PadDiagram = new Lang.Class({
                 this._prevEdited = this._curEdited;
             this._curEdited = null;
         }
-    },
+    }
 
     startEdition(action, idx, dir) {
         let editedLabel;
index 13eab5bed1f2b951519a0254642b18e5ba6d1c98..3e3f4d4d84df00546a0e098818668b98d048e89f 100644 (file)
@@ -4,8 +4,8 @@ const Cairo = imports.cairo;
 const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Pango = imports.gi.Pango;
@@ -83,13 +83,11 @@ function _unpremultiply(color) {
  * this menu also handles startup notification for it.  So when we
  * have an active startup notification, we switch modes to display that.
  */
-var AppMenuButton = new Lang.Class({
-    Name: 'AppMenuButton',
-    Extends: PanelMenu.Button,
+var AppMenuButton = GObject.registerClass({
     Signals: {'changed': {}},
-
+}, class AppMenuButton extends PanelMenu.Button {
     _init(panel) {
-        this.parent(0.0, null, true);
+        super._init(0.0, null, true);
 
         this.actor.accessible_role = Atk.Role.MENU;
 
@@ -148,7 +146,7 @@ var AppMenuButton = new Lang.Class({
             global.window_manager.connect('switch-workspace', this._sync.bind(this));
 
         this._sync();
-    },
+    }
 
     fadeIn() {
         if (this._visible)
@@ -162,7 +160,7 @@ var AppMenuButton = new Lang.Class({
                          { opacity: 255,
                            time: Overview.ANIMATION_TIME,
                            transition: 'easeOutQuad' });
-    },
+    }
 
     fadeOut() {
         if (!this._visible)
@@ -179,7 +177,7 @@ var AppMenuButton = new Lang.Class({
                                this.hide();
                            },
                            onCompleteScope: this });
-    },
+    }
 
     _onStyleChanged(actor) {
         let node = actor.get_theme_node();
@@ -190,7 +188,7 @@ var AppMenuButton = new Lang.Class({
         this._spinner = new Animation.AnimatedIcon(this._spinnerIcon, PANEL_ICON_SIZE);
         this._container.add_actor(this._spinner.actor);
         this._spinner.actor.hide();
-    },
+    }
 
     _syncIcon() {
         if (!this._targetApp)
@@ -198,14 +196,14 @@ var AppMenuButton = new Lang.Class({
 
         let icon = this._targetApp.create_icon_texture(PANEL_ICON_SIZE - APP_MENU_ICON_MARGIN);
         this._iconBox.set_child(icon);
-    },
+    }
 
     _onIconThemeChanged() {
         if (this._iconBox.child == null)
             return;
 
         this._syncIcon();
-    },
+    }
 
     stopAnimation() {
         if (this._stop)
@@ -227,7 +225,7 @@ var AppMenuButton = new Lang.Class({
                                this._spinner.actor.hide();
                            }
                          });
-    },
+    }
 
     startAnimation() {
         this._stop = false;
@@ -237,7 +235,7 @@ var AppMenuButton = new Lang.Class({
 
         this._spinner.play();
         this._spinner.actor.show();
-    },
+    }
 
     _onAppStateChanged(appSys, app) {
         let state = app.state;
@@ -250,7 +248,7 @@ var AppMenuButton = new Lang.Class({
         // changing.  An example case is how we map OpenOffice.org based on the window
         // title which is a dynamic property.
         this._sync();
-    },
+    }
 
     _focusAppChanged() {
         let tracker = Shell.WindowTracker.get_default();
@@ -263,7 +261,7 @@ var AppMenuButton = new Lang.Class({
                 return;
         }
         this._sync();
-    },
+    }
 
     _findTargetApp() {
         let workspaceManager = global.workspace_manager;
@@ -278,7 +276,7 @@ var AppMenuButton = new Lang.Class({
                 return this._startingApps[i];
 
         return null;
-    },
+    }
 
     _sync() {
         let targetApp = this._findTargetApp();
@@ -332,7 +330,7 @@ var AppMenuButton = new Lang.Class({
         this._syncIcon();
         this._maybeSetMenu();
         this.emit('changed');
-    },
+    }
 
     _maybeSetMenu() {
         let menu;
@@ -365,7 +363,7 @@ var AppMenuButton = new Lang.Class({
         this.setMenu(menu);
         if (menu)
             this._menuManager.addMenu(menu);
-    },
+    }
 
     _onDestroy() {
         if (this._appStateChangedSignalId > 0) {
@@ -395,16 +393,14 @@ var AppMenuButton = new Lang.Class({
             this._switchWorkspaceNotifyId = 0;
         }
 
-        this.parent();
+        super._onDestroy();
     }
 });
 
-var ActivitiesButton = new Lang.Class({
-    Name: 'ActivitiesButton',
-    Extends: PanelMenu.Button,
-
+var ActivitiesButton = GObject.registerClass(
+class ActivitiesButton extends PanelMenu.Button {
     _init() {
-        this.parent(0.0, null, true);
+        super._init(0.0, null, true);
         this.actor.accessible_role = Atk.Role.TOGGLE_BUTTON;
 
         this.actor.name = 'panelActivities';
@@ -430,7 +426,7 @@ var ActivitiesButton = new Lang.Class({
         });
 
         this._xdndTimeOut = 0;
-    },
+    }
 
     handleDragOver(source, actor, x, y, time) {
         if (source != Main.xdndHandler)
@@ -444,7 +440,7 @@ var ActivitiesButton = new Lang.Class({
         GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview');
 
         return DND.DragMotionResult.CONTINUE;
-    },
+    }
 
     _onCapturedEvent(actor, event) {
         if (event.type() == Clutter.EventType.BUTTON_PRESS ||
@@ -453,10 +449,10 @@ var ActivitiesButton = new Lang.Class({
                 return Clutter.EVENT_STOP;
         }
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     _onEvent(actor, event) {
-        this.parent(actor, event);
+        super._onEvent(actor, event);
 
         if (event.type() == Clutter.EventType.TOUCH_END ||
             event.type() == Clutter.EventType.BUTTON_RELEASE)
@@ -464,7 +460,7 @@ var ActivitiesButton = new Lang.Class({
                 Main.overview.toggle();
 
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     _onKeyRelease(actor, event) {
         let symbol = event.get_key_symbol();
@@ -473,7 +469,7 @@ var ActivitiesButton = new Lang.Class({
                 Main.overview.toggle();
         }
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     _xdndToggleOverview(actor) {
         let [x, y, mask] = global.get_pointer();
@@ -652,23 +648,21 @@ var PanelCorner = class {
     }
 };
 
-var AggregateLayout = new Lang.Class({
-    Name: 'AggregateLayout',
-    Extends: Clutter.BoxLayout,
-
+var AggregateLayout = GObject.registerClass(
+class AggregateLayout extends Clutter.BoxLayout {
     _init(params) {
         if (!params)
             params = {};
         params['orientation'] = Clutter.Orientation.VERTICAL;
-        this.parent(params);
+        super._init(params);
 
         this._sizeChildren = [];
-    },
+    }
 
     addSizeChild(actor) {
         this._sizeChildren.push(actor);
         this.layout_changed();
-    },
+    }
 
     vfunc_get_preferred_width(container, forHeight) {
         let themeNode = container.get_theme_node();
@@ -685,12 +679,10 @@ var AggregateLayout = new Lang.Class({
     }
 });
 
-var AggregateMenu = new Lang.Class({
-    Name: 'AggregateMenu',
-    Extends: PanelMenu.Button,
-
+var AggregateMenu = GObject.registerClass(
+class AggregateMenu extends PanelMenu.Button {
     _init() {
-        this.parent(0.0, C_("System menu in the top bar", "System"), false);
+        super._init(0.0, C_("System menu in the top bar", "System"), false);
         this.menu.actor.add_style_class_name('aggregate-menu');
 
         let menuLayout = new AggregateLayout();
@@ -757,7 +749,7 @@ var AggregateMenu = new Lang.Class({
         menuLayout.addSizeChild(this._rfkill.menu.actor);
         menuLayout.addSizeChild(this._power.menu.actor);
         menuLayout.addSizeChild(this._system.menu.actor);
-    },
+    }
 });
 
 const PANEL_ITEM_IMPLEMENTATIONS = {
@@ -769,12 +761,10 @@ const PANEL_ITEM_IMPLEMENTATIONS = {
     'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
 };
 
-var Panel = new Lang.Class({
-    Name: 'Panel',
-    Extends: St.Widget,
-
+var Panel = GObject.registerClass(
+class Panel extends St.Widget {
     _init() {
-        this.parent({ name: 'panel',
+        super._init({ name: 'panel',
                       reactive: true });
 
         // For compatibility with extensions that still use the
@@ -827,7 +817,7 @@ var Panel = new Lang.Class({
 
         global.display.connect('workareas-changed', () => { this.queue_relayout(); });
         this._updatePanel();
-    },
+    }
 
     _onWindowActorAdded(container, metaWindowActor) {
         let signalIds = [];
@@ -835,7 +825,7 @@ var Panel = new Lang.Class({
             signalIds.push(metaWindowActor.connect(s, this._updateSolidStyle.bind(this)));
         });
         this._trackedWindows.set(metaWindowActor, signalIds);
-    },
+    }
 
     _onWindowActorRemoved(container, metaWindowActor) {
         this._trackedWindows.get(metaWindowActor).forEach(id => {
@@ -843,7 +833,7 @@ var Panel = new Lang.Class({
         });
         this._trackedWindows.delete(metaWindowActor);
         this._updateSolidStyle();
-    },
+    }
 
     vfunc_get_preferred_width(actor, forHeight) {
         let primaryMonitor = Main.layoutManager.primaryMonitor;
@@ -852,10 +842,10 @@ var Panel = new Lang.Class({
             return [0, primaryMonitor.width];
 
         return [0,  0];
-    },
+    }
 
     vfunc_allocate(box, flags) {
-        this.parent(box, flags);
+        super.vfunc_allocate(box, flags);
 
         let allocWidth = box.x2 - box.x1;
         let allocHeight = box.y2 - box.y1;
@@ -931,7 +921,7 @@ var Panel = new Lang.Class({
         childBox.y1 = allocHeight;
         childBox.y2 = allocHeight + cornerHeight;
         this._rightCorner.actor.allocate(childBox, flags);
-    },
+    }
 
     _onButtonPress(actor, event) {
         if (Main.modalCount > 0)
@@ -977,7 +967,7 @@ var Panel = new Lang.Class({
                                      stageX, stageY);
 
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _onKeyPress(actor, event) {
         let symbol = event.get_key_symbol();
@@ -987,7 +977,7 @@ var Panel = new Lang.Class({
         }
 
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     _toggleMenu(indicator) {
         if (!indicator) // menu not supported by current session mode
@@ -1000,15 +990,15 @@ var Panel = new Lang.Class({
         menu.toggle();
         if (menu.isOpen)
             menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
-    },
+    }
 
     toggleAppMenu() {
         this._toggleMenu(this.statusArea.appMenu);
-    },
+    }
 
     toggleCalendar() {
         this._toggleMenu(this.statusArea.dateMenu);
-    },
+    }
 
     closeCalendar() {
         let indicator = this.statusArea.dateMenu;
@@ -1020,7 +1010,7 @@ var Panel = new Lang.Class({
             return;
 
         menu.close();
-    },
+    }
 
     set boxOpacity(value) {
         let isReactive = value > 0;
@@ -1031,11 +1021,11 @@ var Panel = new Lang.Class({
         this._centerBox.reactive = isReactive;
         this._rightBox.opacity = value;
         this._rightBox.reactive = isReactive;
-    },
+    }
 
     get boxOpacity() {
         return this._leftBox.opacity;
-    },
+    }
 
     _updatePanel() {
         let panel = Main.sessionMode.panel;
@@ -1068,7 +1058,7 @@ var Panel = new Lang.Class({
             this._leftCorner.setStyleParent(this._leftBox);
             this._rightCorner.setStyleParent(this._rightBox);
         }
-    },
+    }
 
     _updateSolidStyle() {
         if (this.has_style_pseudo_class('overview') || !Main.sessionMode.hasWindows) {
@@ -1103,7 +1093,7 @@ var Panel = new Lang.Class({
         else
             this._removeStyleClassName('solid');
 
-    },
+    }
 
     _hideIndicators() {
         for (let role in PANEL_ITEM_IMPLEMENTATIONS) {
@@ -1112,7 +1102,7 @@ var Panel = new Lang.Class({
                 continue;
             indicator.container.hide();
         }
-    },
+    }
 
     _ensureIndicator(role) {
         let indicator = this.statusArea[role];
@@ -1126,7 +1116,7 @@ var Panel = new Lang.Class({
             this.statusArea[role] = indicator;
         }
         return indicator;
-    },
+    }
 
     _updateBox(elements, box) {
         let nChildren = box.get_n_children();
@@ -1139,7 +1129,7 @@ var Panel = new Lang.Class({
 
             this._addToPanelBox(role, indicator, i + nChildren, box);
         }
-    },
+    }
 
     _addToPanelBox(role, indicator, position, box) {
         let container = indicator.container;
@@ -1160,7 +1150,7 @@ var Panel = new Lang.Class({
         });
         indicator.connect('menu-set', this._onMenuSet.bind(this));
         this._onMenuSet(indicator);
-    },
+    }
 
     addToStatusArea(role, indicator, position, box) {
         if (this.statusArea[role])
@@ -1179,19 +1169,19 @@ var Panel = new Lang.Class({
         this.statusArea[role] = indicator;
         this._addToPanelBox(role, indicator, position, boxContainer);
         return indicator;
-    },
+    }
 
     _addStyleClassName(className) {
         this.add_style_class_name(className);
         this._rightCorner.actor.add_style_class_name(className);
         this._leftCorner.actor.add_style_class_name(className);
-    },
+    }
 
     _removeStyleClassName(className) {
         this.remove_style_class_name(className);
         this._rightCorner.actor.remove_style_class_name(className);
         this._leftCorner.actor.remove_style_class_name(className);
-    },
+    }
 
     _onMenuSet(indicator) {
         if (!indicator.menu || indicator.menu.hasOwnProperty('_openChangedId'))
index d6c7b10b75b2a69dd8c1082b0e59f7a8749f6240..13cc72f7b58564b8955b67af9658554a89bd91de 100644 (file)
@@ -2,8 +2,8 @@
 
 const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
+const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
 const Shell = imports.gi.Shell;
 const Signals = imports.signals;
 const St = imports.gi.St;
@@ -13,14 +13,12 @@ const Main = imports.ui.main;
 const Params = imports.misc.params;
 const PopupMenu = imports.ui.popupMenu;
 
-var ButtonBox = new Lang.Class({
-    Name: 'ButtonBox',
-    Extends: St.Widget,
-
+var ButtonBox = GObject.registerClass(
+class ButtonBox extends St.Widget {
     _init(params) {
         params = Params.parse(params, { style_class: 'panel-button' }, true);
 
-        this.parent(params);
+        super._init(params);
 
         this.actor = this;
         this._delegate = this;
@@ -33,14 +31,14 @@ var ButtonBox = new Lang.Class({
         this.connect('destroy', this._onDestroy.bind(this));
 
         this._minHPadding = this._natHPadding = 0.0;
-    },
+    }
 
     _onStyleChanged(actor) {
         let themeNode = actor.get_theme_node();
 
         this._minHPadding = themeNode.get_length('-minimum-hpadding');
         this._natHPadding = themeNode.get_length('-natural-hpadding');
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         let child = this.get_first_child();
@@ -55,7 +53,7 @@ var ButtonBox = new Lang.Class({
         naturalSize += 2 * this._natHPadding;
 
         return [minimumSize, naturalSize];
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         let child = this.get_first_child();
@@ -64,7 +62,7 @@ var ButtonBox = new Lang.Class({
             return child.get_preferred_height(-1);
 
         return [0, 0];
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -91,21 +89,19 @@ var ButtonBox = new Lang.Class({
         childBox.y2 = availHeight;
 
         child.allocate(childBox, flags);
-    },
+    }
 
     _onDestroy() {
         this.container.child = null;
         this.container.destroy();
-    },
+    }
 });
 
-var Button = new Lang.Class({
-    Name: 'PanelMenuButton',
-    Extends: ButtonBox,
+var Button = GObject.registerClass({
     Signals: {'menu-set': {} },
-
+}, class PanelMenuButton extends ButtonBox {
     _init(menuAlignment, nameText, dontCreateMenu) {
-        this.parent({ reactive: true,
+        super._init({ reactive: true,
                       can_focus: true,
                       track_hover: true,
                       accessible_name: nameText ? nameText : "",
@@ -118,13 +114,13 @@ var Button = new Lang.Class({
             this.menu = new PopupMenu.PopupDummyMenu(this.actor);
         else
             this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
-    },
+    }
 
     setSensitive(sensitive) {
         this.reactive = sensitive;
         this.can_focus = sensitive;
         this.track_hover = sensitive;
-    },
+    }
 
     setMenu(menu) {
         if (this.menu)
@@ -140,7 +136,7 @@ var Button = new Lang.Class({
             this.menu.actor.hide();
         }
         this.emit('menu-set');
-    },
+    }
 
     _onEvent(actor, event) {
         if (this.menu &&
@@ -149,7 +145,7 @@ var Button = new Lang.Class({
             this.menu.toggle();
 
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     _onVisibilityChanged() {
         if (!this.menu)
@@ -157,7 +153,7 @@ var Button = new Lang.Class({
 
         if (!this.actor.visible)
             this.menu.close();
-    },
+    }
 
     _onMenuKeyPress(actor, event) {
         if (global.focus_manager.navigate_from_event(event))
@@ -173,7 +169,7 @@ var Button = new Lang.Class({
             }
         }
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     _onOpenStateChanged(menu, open) {
         if (open)
@@ -193,10 +189,10 @@ var Button = new Lang.Class({
         // factor when computing max-height
         let maxHeight = Math.round((workArea.height - verticalMargins) / scaleFactor);
         this.menu.actor.style = ('max-height: %spx;').format(maxHeight);
-    },
+    }
 
     _onDestroy() {
-        this.parent();
+        super._onDestroy();
 
         if (this.menu)
             this.menu.destroy();
index b0119455a9fd3d376805920c6c2a49a57e79b594..f5ba1c29985d8d416e53b0527c03e3af6a3a2951 100644 (file)
@@ -6,8 +6,8 @@ const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
 const GnomeDesktop = imports.gi.GnomeDesktop;
+const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
@@ -340,12 +340,10 @@ var NotificationsBox = class {
 };
 Signals.addSignalMethods(NotificationsBox.prototype);
 
-var Arrow = new Lang.Class({
-    Name: 'Arrow',
-    Extends: St.Bin,
-
+var Arrow = GObject.registerClass(
+class ScreenShieldArrow extends St.Bin {
     _init(params) {
-        this.parent(params);
+        super._init(params);
         this.x_fill = this.y_fill = true;
 
         this._drawingArea = new St.DrawingArea();
@@ -354,7 +352,7 @@ var Arrow = new Lang.Class({
 
         this._shadowHelper = null;
         this._shadowWidth = this._shadowHeight = 0;
-    },
+    }
 
     _drawArrow(arrow) {
         let cr = arrow.get_context();
@@ -372,10 +370,10 @@ var Arrow = new Lang.Class({
         cr.lineTo(w - thickness / 2, h - thickness / 2);
         cr.stroke();
         cr.$dispose();
-    },
+    }
 
     vfunc_get_paint_volume(volume) {
-        if (!this.parent(volume))
+        if (!super.vfunc_get_paint_volume(volume))
             return false;
 
         if (!this._shadow)
@@ -388,7 +386,7 @@ var Arrow = new Lang.Class({
         volume.set_height(Math.max(shadow_box.y2 - shadow_box.y1, volume.get_height()));
 
         return true;
-    },
+    }
 
     vfunc_style_changed() {
         let node = this.get_theme_node();
@@ -398,8 +396,8 @@ var Arrow = new Lang.Class({
         else
             this._shadowHelper = null;
 
-        this.parent();
-    },
+        super.vfunc_style_changed();
+    }
 
     vfunc_paint() {
         if (this._shadowHelper) {
index a3ddf537a566ca7d7bbebdc7a5689dbea4f56550..df359ae703b1b8819d092fb97ccf74b5b69f7539 100644 (file)
@@ -1,9 +1,9 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 
 const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
 const GLib = imports.gi.GLib;
 const Gio = imports.gi.Gio;
+const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
 const Meta = imports.gi.Meta;
 const Signals = imports.signals;
@@ -24,10 +24,8 @@ const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers';
 var MAX_LIST_SEARCH_RESULTS_ROWS = 5;
 var MAX_GRID_SEARCH_RESULTS_ROWS = 1;
 
-var MaxWidthBin = new Lang.Class({
-    Name: 'MaxWidthBin',
-    Extends: St.Bin,
-
+var MaxWidthBin = GObject.registerClass(
+class MaxWidthBin extends St.Bin {
     vfunc_allocate(box, flags) {
         let themeNode = this.get_theme_node();
         let maxWidth = themeNode.get_max_width();
@@ -40,7 +38,7 @@ var MaxWidthBin = new Lang.Class({
             adjustedBox.x2 -= Math.floor(excessWidth / 2);
         }
 
-        this.parent(adjustedBox, flags);
+        super.vfunc_allocate(adjustedBox, flags);
     }
 });
 
@@ -724,15 +722,11 @@ var SearchResults = class {
 };
 Signals.addSignalMethods(SearchResults.prototype);
 
-var ProviderInfo = new Lang.Class({
-    Name: 'ProviderInfo',
-    Extends: St.Button,
-
-    PROVIDER_ICON_SIZE: 32,
-
+var ProviderInfo = GObject.registerClass(
+class ProviderInfo extends St.Button {
     _init(provider) {
         this.provider = provider;
-        this.parent({ style_class: 'search-provider-icon',
+        super._init({ style_class: 'search-provider-icon',
                       reactive: true,
                       can_focus: true,
                       accessible_name: provider.appInfo.get_name(),
@@ -760,14 +754,18 @@ var ProviderInfo = new Lang.Class({
 
         this._content.add_actor(icon);
         this._content.add_actor(detailsBox);
-    },
+    }
+
+    get PROVIDER_ICON_SIZE() {
+        return 32;
+    }
 
     animateLaunch() {
         let appSys = Shell.AppSystem.get_default();
         let app = appSys.lookup_app(this.provider.appInfo.get_id());
         if (app.state == Shell.AppState.STOPPED)
             IconGrid.zoomOutActor(this._content);
-    },
+    }
 
     setMoreCount(count) {
         this._moreLabel.text = ngettext("%d more", "%d more", count).format(count);
index adf3ca781a5c05c7f9e264dad8d1e75e7dcc84c9..7c438cfaab18a4785833cd58f73f266682652c26 100644 (file)
@@ -3,7 +3,7 @@
 const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
-const Lang = imports.lang;
+const GObject = imports.gi.GObject;
 const Mainloop = imports.mainloop;
 const St = imports.gi.St;
 
@@ -34,12 +34,10 @@ const KEY_TEXT_SCALING_FACTOR       = 'text-scaling-factor';
 
 const HIGH_CONTRAST_THEME           = 'HighContrast';
 
-var ATIndicator = new Lang.Class({
-    Name: 'ATIndicator',
-    Extends: PanelMenu.Button,
-
+var ATIndicator = GObject.registerClass(
+class ATIndicator extends PanelMenu.Button {
     _init() {
-        this.parent(0.0, _("Accessibility"));
+        super._init(0.0, _("Accessibility"));
 
         this._hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
         this._hbox.add_child(new St.Icon({ style_class: 'system-status-icon',
@@ -85,7 +83,7 @@ var ATIndicator = new Lang.Class({
         this.menu.addMenuItem(mouseKeys);
 
         this._syncMenuVisibility();
-    },
+    }
 
     _syncMenuVisibility() {
         this._syncMenuVisibilityIdle = 0;
@@ -96,7 +94,7 @@ var ATIndicator = new Lang.Class({
         this.actor.visible = alwaysShow || items.some(f => !!f.state);
 
         return GLib.SOURCE_REMOVE;
-    },
+    }
 
     _queueSyncMenuVisibility() {
         if (this._syncMenuVisibilityIdle)
@@ -104,7 +102,7 @@ var ATIndicator = new Lang.Class({
 
         this._syncMenuVisibilityIdle = Mainloop.idle_add(this._syncMenuVisibility.bind(this));
         GLib.Source.set_name_by_id(this._syncMenuVisibilityIdle, '[gnome-shell] this._syncMenuVisibility');
-    },
+    }
 
     _buildItemExtended(string, initial_value, writable, on_set) {
         let widget = new PopupMenu.PopupSwitchMenuItem(string, initial_value);
@@ -115,7 +113,7 @@ var ATIndicator = new Lang.Class({
                 on_set(item.state);
             });
         return widget;
-    },
+    }
 
     _buildItem(string, schema, key) {
         let settings = new Gio.Settings({ schema_id: schema });
@@ -130,7 +128,7 @@ var ATIndicator = new Lang.Class({
             settings.is_writable(key),
             enabled => settings.set_boolean(key, enabled));
         return widget;
-    },
+    }
 
     _buildHCItem() {
         let interfaceSettings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
@@ -183,7 +181,7 @@ var ATIndicator = new Lang.Class({
                 }
             });
         return highContrast;
-    },
+    }
 
     _buildFontItem() {
         let settings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
index 81646a4816ade52965c5d485c87dcd337c3e0727..0e5b18504a4f106165dd15595b0f3b4c9ff8228f 100644 (file)
@@ -3,8 +3,8 @@
 const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
 const IBus = imports.gi.IBus;
-const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 const Signals = imports.signals;
@@ -73,18 +73,16 @@ var InputSource = class {
 };
 Signals.addSignalMethods(InputSource.prototype);
 
-var InputSourcePopup = new Lang.Class({
-    Name: 'InputSourcePopup',
-    Extends: SwitcherPopup.SwitcherPopup,
-
+var InputSourcePopup = GObject.registerClass(
+class InputSourcePopup extends SwitcherPopup.SwitcherPopup {
     _init(items, action, actionBackward) {
-        this.parent(items);
+        super._init(items);
 
         this._action = action;
         this._actionBackward = actionBackward;
 
         this._switcherList = new InputSourceSwitcher(this._items);
-    },
+    }
 
     _keyPressHandler(keysym, action) {
         if (action == this._action)
@@ -99,25 +97,23 @@ var InputSourcePopup = new Lang.Class({
             return Clutter.EVENT_PROPAGATE;
 
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _finish() {
-        this.parent();
+        super._finish();
 
         this._items[this._selectedIndex].activate(true);
-    },
+    }
 });
 
-var InputSourceSwitcher = new Lang.Class({
-    Name: 'InputSourceSwitcher',
-    Extends: SwitcherPopup.SwitcherList,
-
+var InputSourceSwitcher = GObject.registerClass(
+class InputSourceSwitcher extends SwitcherPopup.SwitcherList {
     _init(items) {
-        this.parent(true);
+        super._init(true);
 
         for (let i = 0; i < items.length; i++)
             this._addIcon(items[i]);
-    },
+    }
 
     _addIcon(item) {
         let box = new St.BoxLayout({ vertical: true });
@@ -780,9 +776,8 @@ function getInputSourceManager() {
     return _inputSourceManager;
 }
 
-var InputSourceIndicatorContainer = new Lang.Class({
-    Name: 'InputSourceIndicatorContainer',
-    Extends: St.Widget,
+var InputSourceIndicatorContainer = GObject.registerClass(
+class InputSourceIndicatorContainer extends St.Widget {
 
     vfunc_get_preferred_width(forHeight) {
         // Here, and in vfunc_get_preferred_height, we need to query
@@ -793,7 +788,7 @@ var InputSourceIndicatorContainer = new Lang.Class({
             return [Math.max(maxWidth[0], width[0]),
                     Math.max(maxWidth[1], width[1])];
         }, [0, 0]);
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         return this.get_children().reduce((maxHeight, child) => {
@@ -801,7 +796,7 @@ var InputSourceIndicatorContainer = new Lang.Class({
             return [Math.max(maxHeight[0], height[0]),
                     Math.max(maxHeight[1], height[1])];
         }, [0, 0]);
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -818,12 +813,10 @@ var InputSourceIndicatorContainer = new Lang.Class({
     }
 });
 
-var InputSourceIndicator = new Lang.Class({
-    Name: 'InputSourceIndicator',
-    Extends: PanelMenu.Button,
-
+var InputSourceIndicator = GObject.registerClass(
+class InputSourceIndicator extends PanelMenu.Button {
     _init() {
-        this.parent(0.0, _("Keyboard"));
+        super._init(0.0, _("Keyboard"));
 
         this.connect('destroy', this._onDestroy.bind(this));
 
@@ -856,7 +849,7 @@ var InputSourceIndicator = new Lang.Class({
         this._inputSourceManagerCurrentSourceChangedId =
             this._inputSourceManager.connect('current-source-changed', this._currentSourceChanged.bind(this));
         this._inputSourceManager.reload();
-    },
+    }
 
     _onDestroy() {
         if (this._inputSourceManager) {
@@ -864,7 +857,7 @@ var InputSourceIndicator = new Lang.Class({
             this._inputSourceManager.disconnect(this._inputSourceManagerCurrentSourceChangedId);
             this._inputSourceManager = null;
         }
-    },
+    }
 
     _sessionUpdated() {
         // re-using "allowSettings" for the keyboard layout is a bit shady,
@@ -872,7 +865,7 @@ var InputSourceIndicator = new Lang.Class({
         // from shell menus"; we can always add a separate sessionMode
         // option if need arises.
         this._showLayoutItem.actor.visible = Main.sessionMode.allowSettings;
-    },
+    }
 
     _sourcesChanged() {
         for (let i in this._menuItems)
@@ -903,7 +896,7 @@ var InputSourceIndicator = new Lang.Class({
             this.menu.addMenuItem(menuItem, menuIndex++);
             this._container.add_actor(indicatorLabel);
         }
-    },
+    }
 
     _currentSourceChanged(manager, oldSource) {
         let nVisibleSources = Object.keys(this._inputSourceManager.inputSources).length;
@@ -932,7 +925,7 @@ var InputSourceIndicator = new Lang.Class({
 
         this._menuItems[newSource.index].setOrnament(PopupMenu.Ornament.DOT);
         this._indicatorLabels[newSource.index].show();
-    },
+    }
 
     _buildPropSection(properties) {
         this._propSeparator.actor.hide();
@@ -945,7 +938,7 @@ var InputSourceIndicator = new Lang.Class({
             this._propSection.actor.show();
             this._propSeparator.actor.show();
         }
-    },
+    }
 
     _buildPropSubMenu(menu, props) {
         if (!props)
@@ -1047,7 +1040,7 @@ var InputSourceIndicator = new Lang.Class({
             item.setSensitive(prop.get_sensitive());
             menu.addMenuItem(item);
         }
-    },
+    }
 
     _showLayout() {
         Main.overview.hide();
@@ -1074,5 +1067,5 @@ var InputSourceIndicator = new Lang.Class({
             description = description + '\t' + xkbVariant;
 
         Util.spawn(['gkbd-keyboard-display', '-l', description]);
-    },
+    }
 });
index 31b4f337636339d1a39a752eefae88fbca8254c5..8b726ba0696443728e0b58d9b30cb084c2be5457 100644 (file)
@@ -1,7 +1,7 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 
 const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
+const GObject = imports.gi.GObject;
 const Meta = imports.gi.Meta;
 const St = imports.gi.St;
 
@@ -9,10 +9,8 @@ const SwitcherPopup = imports.ui.switcherPopup;
 
 var APP_ICON_SIZE = 96;
 
-var SwitchMonitorPopup = new Lang.Class({
-    Name: 'SwitchMonitorPopup',
-    Extends: SwitcherPopup.SwitcherPopup,
-
+var SwitchMonitorPopup = GObject.registerClass(
+class SwitchMonitorPopup extends SwitcherPopup.SwitcherPopup {
     _init() {
         let items = [{ icon:  'view-mirror-symbolic',
                        /* Translators: this is for display mirroring i.e. cloning.
@@ -35,23 +33,23 @@ var SwitchMonitorPopup = new Lang.Class({
                         */
                        label: _('Built-in Only') }];
 
-        this.parent(items);
+        super._init(items);
 
         this._switcherList = new SwitchMonitorSwitcher(items);
-    },
+    }
 
     show(backward, binding, mask) {
         if (!Meta.MonitorManager.get().can_switch_config())
             return false;
 
-        return this.parent(backward, binding, mask);
-    },
+        return super.show(backward, binding, mask);
+    }
 
     _initialSelection() {
         let currentConfig = Meta.MonitorManager.get().get_switch_config();
         let selectConfig = (currentConfig + 1) % Meta.MonitorSwitchConfigType.UNKNOWN;
         this._select(selectConfig);
-    },
+    }
 
     _keyPressHandler(keysym, action) {
         if (action == Meta.KeyBindingAction.SWITCH_MONITOR)
@@ -64,25 +62,23 @@ var SwitchMonitorPopup = new Lang.Class({
             return Clutter.EVENT_PROPAGATE;
 
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _finish() {
-        this.parent();
+        super._finish();
 
         Meta.MonitorManager.get().switch_config(this._selectedIndex);
-    },
+    }
 });
 
-var SwitchMonitorSwitcher = new Lang.Class({
-    Name: 'SwitchMonitorSwitcher',
-    Extends: SwitcherPopup.SwitcherList,
-
+var SwitchMonitorSwitcher = GObject.registerClass(
+class SwitchMonitorSwitcher extends SwitcherPopup.SwitcherList {
     _init(items) {
-        this.parent(true);
+        super._init(true);
 
         for (let i = 0; i < items.length; i++)
             this._addIcon(items[i]);
-    },
+    }
 
     _addIcon(item) {
         let box = new St.BoxLayout({ style_class: 'alt-tab-app',
@@ -98,4 +94,3 @@ var SwitchMonitorSwitcher = new Lang.Class({
         this.addItem(box, text);
     }
 });
-
index 1bef1af70d691038c12c87dcd369080d3c34ecda..d941acf229372094bc891913fbac30180ab9b824 100644 (file)
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
 const GLib = imports.gi.GLib;
 const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
@@ -38,13 +37,13 @@ function primaryModifier(mask) {
     return primary;
 }
 
-var SwitcherPopup = new Lang.Class({
-    Name: 'SwitcherPopup',
-    Extends: St.Widget,
-    Abstract: true,
-
+var SwitcherPopup = GObject.registerClass(
+class SwitcherPopup extends St.Widget {
     _init(items) {
-        this.parent({ style_class: 'switcher-popup',
+        if (new.target === SwitcherPopup)
+            throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
+
+        super._init({ style_class: 'switcher-popup',
                       reactive: true,
                       visible: false });
 
@@ -72,7 +71,7 @@ var SwitcherPopup = new Lang.Class({
         // Initially disable hover so we ignore the enter-event if
         // the switcher appears underneath the current pointer location
         this._disableHover();
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -93,7 +92,7 @@ var SwitcherPopup = new Lang.Class({
         childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2);
         childBox.y2 = childBox.y1 + childNaturalHeight;
         this._switcherList.allocate(childBox, flags);
-    },
+    }
 
     _initialSelection(backward, binding) {
         if (backward)
@@ -102,7 +101,7 @@ var SwitcherPopup = new Lang.Class({
             this._select(0);
         else
             this._select(1);
-    },
+    }
 
     show(backward, binding, mask) {
         if (this._items.length == 0)
@@ -161,19 +160,19 @@ var SwitcherPopup = new Lang.Class({
                                                            });
         GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel');
         return true;
-    },
+    }
 
     _next() {
         return mod(this._selectedIndex + 1, this._items.length);
-    },
+    }
 
     _previous() {
         return mod(this._selectedIndex - 1, this._items.length);
-    },
+    }
 
     _keyPressHandler(keysym, action) {
         throw new Error('Not implemented');
-    },
+    }
 
     _keyPressEvent(actor, event) {
         let keysym = event.get_key_symbol();
@@ -190,7 +189,7 @@ var SwitcherPopup = new Lang.Class({
             this.fadeAndDestroy();
 
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _keyReleaseEvent(actor, event) {
         if (this._modifierMask) {
@@ -204,43 +203,43 @@ var SwitcherPopup = new Lang.Class({
         }
 
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _clickedOutside(actor, event) {
         this.fadeAndDestroy();
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     _scrollHandler(direction) {
         if (direction == Clutter.ScrollDirection.UP)
             this._select(this._previous());
         else if (direction == Clutter.ScrollDirection.DOWN)
             this._select(this._next());
-    },
+    }
 
     _scrollEvent(actor, event) {
         this._scrollHandler(event.get_scroll_direction());
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     _itemActivatedHandler(n) {
         this._select(n);
-    },
+    }
 
     _itemActivated(switcher, n) {
         this._itemActivatedHandler(n);
         this._finish(global.get_current_time());
-    },
+    }
 
     _itemEnteredHandler(n) {
         this._select(n);
-    },
+    }
 
     _itemEntered(switcher, n) {
         if (!this.mouseActive)
             return;
         this._itemEnteredHandler(n);
-    },
+    }
 
     _itemRemovedHandler(n) {
         if (this._items.length > 0) {
@@ -249,11 +248,11 @@ var SwitcherPopup = new Lang.Class({
         } else {
             this.fadeAndDestroy();
         }
-    },
+    }
 
     _itemRemoved(switcher, n) {
         this._itemRemovedHandler(n);
-    },
+    }
 
     _disableHover() {
         this.mouseActive = false;
@@ -263,13 +262,13 @@ var SwitcherPopup = new Lang.Class({
 
         this._motionTimeoutId = Mainloop.timeout_add(DISABLE_HOVER_TIMEOUT, this._mouseTimedOut.bind(this));
         GLib.Source.set_name_by_id(this._motionTimeoutId, '[gnome-shell] this._mouseTimedOut');
-    },
+    }
 
     _mouseTimedOut() {
         this._motionTimeoutId = 0;
         this.mouseActive = true;
         return GLib.SOURCE_REMOVE;
-    },
+    }
 
     _resetNoModsTimeout() {
         if (this._noModsTimeoutId != 0)
@@ -281,14 +280,14 @@ var SwitcherPopup = new Lang.Class({
                                                          this._noModsTimeoutId = 0;
                                                          return GLib.SOURCE_REMOVE;
                                                      });
-    },
+    }
 
     _popModal() {
         if (this._haveModal) {
             Main.popModal(this);
             this._haveModal = false;
         }
-    },
+    }
 
     fadeAndDestroy() {
         this._popModal();
@@ -304,11 +303,11 @@ var SwitcherPopup = new Lang.Class({
         } else {
             this.destroy();
         }
-    },
+    }
 
     _finish(timestamp) {
         this.fadeAndDestroy();
-    },
+    }
 
     _onDestroy() {
         this._popModal();
@@ -319,7 +318,7 @@ var SwitcherPopup = new Lang.Class({
             Mainloop.source_remove(this._initialDelayTimeoutId);
         if (this._noModsTimeoutId != 0)
             Mainloop.source_remove(this._noModsTimeoutId);
-    },
+    }
 
     _select(num) {
         this._selectedIndex = num;
@@ -327,34 +326,30 @@ var SwitcherPopup = new Lang.Class({
     }
 });
 
-var SwitcherButton = new Lang.Class({
-    Name: 'SwitcherButton',
-    Extends: St.Button,
-
+var SwitcherButton = GObject.registerClass(
+class SwitcherButton extends St.Button {
     _init(square) {
-        this.parent({ style_class: 'item-box',
+        super._init({ style_class: 'item-box',
                       reactive: true });
 
         this._square = square;
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         if (this._square)
             return this.get_preferred_height(-1);
         else
-            return this.parent(forHeight);
+            return super.vfunc_get_preferred_width(forHeight);
     }
 });
 
-var SwitcherList = new Lang.Class({
-    Name: 'SwitcherList',
-    Extends: St.Widget,
+var SwitcherList = GObject.registerClass({
     Signals: { 'item-activated': { param_types: [GObject.TYPE_INT] },
                'item-entered': { param_types: [GObject.TYPE_INT] },
                'item-removed': { param_types: [GObject.TYPE_INT] } },
-
+}, class SwitcherList extends St.Widget {
     _init(squareItems) {
-        this.parent({ style_class: 'switcher-list' });
+        super._init({ style_class: 'switcher-list' });
 
         this._list = new St.BoxLayout({ style_class: 'switcher-list-item-container',
                                         vertical: false,
@@ -397,7 +392,7 @@ var SwitcherList = new Lang.Class({
         this._scrollableLeft = false;
 
         layoutManager.homogeneous = squareItems;
-    },
+    }
 
     addItem(item, label) {
         let bbox = new SwitcherButton(this._squareItems);
@@ -414,17 +409,17 @@ var SwitcherList = new Lang.Class({
         this._items.push(bbox);
 
         return bbox;
-    },
+    }
 
     removeItem(index) {
         let item = this._items.splice(index, 1);
         item[0].destroy();
         this.emit('item-removed', index);
-    },
+    }
 
     _onItemClicked(index) {
         this._itemActivated(index);
-    },
+    }
 
     _onItemEnter(index) {
         // Avoid reentrancy
@@ -433,7 +428,7 @@ var SwitcherList = new Lang.Class({
             this._itemEntered(index);
         }
         return Clutter.EVENT_PROPAGATE;
-    },
+    }
 
     highlight(index, justOutline) {
         if (this._items[this._highlighted]) {
@@ -460,7 +455,7 @@ var SwitcherList = new Lang.Class({
         else if (this._items[index].allocation.x1 - value < 0)
             this._scrollToLeft();
 
-    },
+    }
 
     _scrollToLeft() {
         let adjustment = this._scrollView.hscroll.adjustment;
@@ -484,7 +479,7 @@ var SwitcherList = new Lang.Class({
                                 this.queue_relayout();
                            }
                           });
-    },
+    }
 
     _scrollToRight() {
         let adjustment = this._scrollView.hscroll.adjustment;
@@ -508,15 +503,15 @@ var SwitcherList = new Lang.Class({
                                 this.queue_relayout();
                             }
                           });
-    },
+    }
 
     _itemActivated(n) {
         this.emit('item-activated', n);
-    },
+    }
 
     _itemEntered(n) {
         this.emit('item-entered', n);
-    },
+    }
 
     _maxChildWidth(forHeight) {
         let maxChildMin = 0;
@@ -535,7 +530,7 @@ var SwitcherList = new Lang.Class({
         }
 
         return [maxChildMin, maxChildNat];
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         let themeNode = this.get_theme_node();
@@ -543,7 +538,7 @@ var SwitcherList = new Lang.Class({
         let [minListWidth, ] = this._list.get_preferred_width(forHeight);
 
         return themeNode.adjust_preferred_width(maxChildMin, minListWidth);
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         let maxChildMin = 0;
@@ -563,7 +558,7 @@ var SwitcherList = new Lang.Class({
 
         let themeNode = this.get_theme_node();
         return themeNode.adjust_preferred_height(maxChildMin, maxChildNat);
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
index 9730b73afaf40ba6ddf35255eb4ec99501267976..a702ad842d47cdb341014c3b03f2fcfeb4147529 100644 (file)
@@ -7,7 +7,6 @@ const AccountsService = imports.gi.AccountsService;
 const GLib = imports.gi.GLib;
 const Gio = imports.gi.Gio;
 const GObject = imports.gi.GObject;
-const Lang = imports.lang;
 const St = imports.gi.St;
 
 const Params = imports.misc.params;
@@ -64,12 +63,10 @@ var Avatar = class {
     }
 };
 
-var UserWidgetLabel = new Lang.Class({
-    Name: 'UserWidgetLabel',
-    Extends: St.Widget,
-
+var UserWidgetLabel = GObject.registerClass(
+class UserWidgetLabel extends St.Widget {
     _init(user) {
-        this.parent({ layout_manager: new Clutter.BinLayout() });
+        super._init({ layout_manager: new Clutter.BinLayout() });
 
         this._user = user;
 
@@ -93,7 +90,7 @@ var UserWidgetLabel = new Lang.Class({
         // the actor is destroyed (which is guaranteed to be as part of a normal
         // destroy() call from JS, possibly from some ancestor)
         this.connect('destroy', this._onDestroy.bind(this));
-    },
+    }
 
     _onDestroy() {
         if (this._userLoadedId != 0) {
@@ -105,7 +102,7 @@ var UserWidgetLabel = new Lang.Class({
             this._user.disconnect(this._userChangedId);
             this._userChangedId = 0;
         }
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -132,11 +129,11 @@ var UserWidgetLabel = new Lang.Class({
         childBox.y2 = availHeight;
 
         this._currentLabel.allocate(childBox, flags);
-    },
+    }
 
     vfunc_paint() {
         this._currentLabel.paint();
-    },
+    }
 
     _updateUser() {
         if (this._user.is_loaded) {
@@ -146,7 +143,7 @@ var UserWidgetLabel = new Lang.Class({
             this._realNameLabel.text = '';
             this._userNameLabel.text = '';
         }
-    },
+    }
 });
 
 var UserWidget = class {
index 8cd5454b393bcfb4914a40768ad73ac50b6b40ae..b902eb36467c6e11d63d27c207c8d6309d3d1f3a 100644 (file)
@@ -7,7 +7,6 @@ const Gtk = imports.gi.Gtk;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Signals = imports.signals;
-const Lang = imports.lang;
 const Shell = imports.gi.Shell;
 const St = imports.gi.St;
 const GObject = imports.gi.GObject;
@@ -32,14 +31,12 @@ var ViewPage = {
     SEARCH: 3
 };
 
-var FocusTrap = new Lang.Class({
-    Name: 'FocusTrap',
-    Extends: St.Widget,
-
+var FocusTrap = GObject.registerClass(
+class FocusTrap extends St.Widget {
     vfunc_navigate_focus(from, direction) {
         if (direction == Gtk.DirectionType.TAB_FORWARD ||
             direction == Gtk.DirectionType.TAB_BACKWARD)
-            return this.parent(from, direction);
+            return super.vfunc_navigate_focus(from, direction);
         return false;
     }
 });
@@ -73,24 +70,22 @@ var TouchpadShowOverviewAction = class {
 };
 Signals.addSignalMethods(TouchpadShowOverviewAction.prototype);
 
-var ShowOverviewAction = new Lang.Class({
-    Name: 'ShowOverviewAction',
-    Extends: Clutter.GestureAction,
+var ShowOverviewAction = GObject.registerClass({
     Signals: { 'activated': { param_types: [GObject.TYPE_DOUBLE] } },
-
+}, class ShowOverviewAction extends Clutter.GestureAction {
     _init() {
-        this.parent();
+        super._init();
         this.set_n_touch_points(3);
 
         global.display.connect('grab-op-begin', () => {
             this.cancel();
         });
-    },
+    }
 
     vfunc_gesture_prepare(action, actor) {
         return Main.actionMode == Shell.ActionMode.NORMAL &&
                this.get_n_current_points() == this.get_n_touch_points();
-    },
+    }
 
     _getBoundingRect(motion) {
         let minX, minY, maxX, maxY;
@@ -119,12 +114,12 @@ var ShowOverviewAction = new Lang.Class({
                                     y: minY,
                                     width: maxX - minX,
                                     height: maxY - minY });
-    },
+    }
 
     vfunc_gesture_begin(action, actor) {
         this._initialRect = this._getBoundingRect(false);
         return true;
-    },
+    }
 
     vfunc_gesture_end(action, actor) {
         let rect = this._getBoundingRect(true);
index 8527e08e45a0f69e8e849bc0eac5272e88a6c90d..8c4cb36d873f5ddd8f01c7a38a9f6a504536810f 100644 (file)
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
 const GLib = imports.gi.GLib;
 const Gio = imports.gi.Gio;
 const GObject = imports.gi.GObject;
-const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Pango = imports.gi.Pango;
@@ -525,45 +524,43 @@ var TouchpadWorkspaceSwitchAction = class {
 };
 Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype);
 
-var WorkspaceSwitchAction = new Lang.Class({
-    Name: 'WorkspaceSwitchAction',
-    Extends: Clutter.SwipeAction,
+var WorkspaceSwitchAction = GObject.registerClass({
     Signals: { 'activated': { param_types: [Meta.MotionDirection.$gtype] },
                'motion':    { param_types: [GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] },
                'cancel':    { param_types: [] }},
-
+}, class WorkspaceSwitchAction extends Clutter.SwipeAction {
     _init() {
-        this.parent();
+        super._init();
         this.set_n_touch_points(4);
         this._swept = false;
 
         global.display.connect('grab-op-begin', () => {
             this.cancel();
         });
-    },
+    }
 
     vfunc_gesture_prepare(actor) {
         let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
 
         this._swept = false;
 
-        if (!this.parent(actor))
+        if (!super.vfunc_gesture_prepare(actor))
             return false;
 
         return (allowedModes & Main.actionMode);
-    },
+    }
 
     vfunc_gesture_progress(actor) {
         let [x, y] = this.get_motion_coords(0);
         let [xPress, yPress] = this.get_press_coords(0);
         this.emit('motion', x - xPress, y - yPress);
         return true;
-    },
+    }
 
     vfunc_gesture_cancel(actor) {
         if (!this._swept)
             this.emit('cancel');
-    },
+    }
 
     vfunc_swipe(actor, direction) {
         let [x, y] = this.get_motion_coords(0);
@@ -590,19 +587,17 @@ var WorkspaceSwitchAction = new Lang.Class({
     }
 });
 
-var AppSwitchAction = new Lang.Class({
-    Name: 'AppSwitchAction',
-    Extends: Clutter.GestureAction,
+var AppSwitchAction = GObject.registerClass({
     Signals: { 'activated': {} },
-
+}, class AppSwitchAction extends Clutter.GestureAction {
     _init() {
-        this.parent();
+        super._init();
         this.set_n_touch_points(3);
 
         global.display.connect('grab-op-begin', () => {
             this.cancel();
         });
-    },
+    }
 
     vfunc_gesture_prepare(action, actor) {
         if (Main.actionMode != Shell.ActionMode.NORMAL) {
@@ -611,7 +606,7 @@ var AppSwitchAction = new Lang.Class({
         }
 
         return this.get_n_current_points() <= 4;
-    },
+    }
 
     vfunc_gesture_begin(action, actor) {
         // in milliseconds
@@ -635,7 +630,7 @@ var AppSwitchAction = new Lang.Class({
         }
 
         return this.get_n_current_points() <= 4;
-    },
+    }
 
     vfunc_gesture_progress(action, actor) {
         const MOTION_THRESHOLD = 30;
index d002cd0086fe7c066e82c93592bd14231bef014c..f3b557e7e918d3b12387a9d42275df73cc99fe91 100644 (file)
@@ -2,7 +2,7 @@
 
 const Clutter = imports.gi.Clutter;
 const GLib = imports.gi.GLib;
-const Lang = imports.lang;
+const GObject = imports.gi.GObject;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Pango = imports.gi.Pango;
@@ -40,24 +40,22 @@ function _interpolate(start, end, step) {
     return start + (end - start) * step;
 }
 
-var WindowCloneLayout = new Lang.Class({
-    Name: 'WindowCloneLayout',
-    Extends: Clutter.LayoutManager,
-
+var WindowCloneLayout = GObject.registerClass(
+class WindowCloneLayout extends Clutter.LayoutManager {
     _init(boundingBox) {
-        this.parent();
+        super._init();
 
         this._boundingBox = boundingBox;
-    },
+    }
 
     get boundingBox() {
         return this._boundingBox;
-    },
+    }
 
     set boundingBox(b) {
         this._boundingBox = b;
         this.layout_changed();
-    },
+    }
 
     _makeBoxForWindow(window) {
         // We need to adjust the position of the actor because of the
@@ -78,15 +76,15 @@ var WindowCloneLayout = new Lang.Class({
         box.set_size(inputRect.width, inputRect.height);
 
         return box;
-    },
+    }
 
     vfunc_get_preferred_height(container, forWidth) {
         return [this._boundingBox.height, this._boundingBox.height];
-    },
+    }
 
     vfunc_get_preferred_width(container, forHeight) {
         return [this._boundingBox.width, this._boundingBox.width];
-    },
+    }
 
     vfunc_allocate(container, box, flags) {
         container.get_children().forEach(child => {
@@ -1072,10 +1070,8 @@ function rectEqual(one, two) {
             one.height == two.height);
 }
 
-const WorkspaceActor = new Lang.Class({
-    Name: 'WorkspaceActor',
-    Extends: St.Widget,
-
+const WorkspaceActor = GObject.registerClass(
+class WorkspaceActor extends St.Widget {
     vfunc_get_focus_chain() {
         return this.get_children().filter(c => c.visible).sort((a,b) => {
             let cloneA = (a._delegate && a._delegate instanceof WindowClone) ? a._delegate: null;
index 8fa5bb5ecf4c00307bca053f85f11f06095e21ab..e96385345ba160f1d2b8c54f7d01027515a32c62 100644 (file)
@@ -2,7 +2,7 @@
 
 const Clutter = imports.gi.Clutter;
 const GLib = imports.gi.GLib;
-const Lang = imports.lang;
+const GObject = imports.gi.GObject;
 const Mainloop = imports.mainloop;
 const Meta  = imports.gi.Meta;
 const Shell = imports.gi.Shell;
@@ -15,12 +15,10 @@ const Tweener = imports.ui.tweener;
 var ANIMATION_TIME = 0.1;
 var DISPLAY_TIMEOUT = 600;
 
-var WorkspaceSwitcherPopupList = new Lang.Class({
-    Name: 'WorkspaceSwitcherPopupList',
-    Extends: St.Widget,
-
+var WorkspaceSwitcherPopupList = GObject.registerClass(
+class WorkspaceSwitcherPopupList extends St.Widget {
     _init() {
-        this.parent({ style_class: 'workspace-switcher' });
+        super._init({ style_class: 'workspace-switcher' });
 
         this._itemSpacing = 0;
         this._childHeight = 0;
@@ -29,7 +27,7 @@ var WorkspaceSwitcherPopupList = new Lang.Class({
         this.connect('style-changed', () => {
            this._itemSpacing = this.get_theme_node().get_length('spacing');
         });
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
@@ -53,14 +51,14 @@ var WorkspaceSwitcherPopupList = new Lang.Class({
         this._childHeight = (height - spacing) / workspaceManager.n_workspaces;
 
         return themeNode.adjust_preferred_height(height, height);
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
         this._childWidth = Math.round(this._childHeight * workArea.width / workArea.height);
 
         return [this._childWidth, this._childWidth];
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -81,15 +79,13 @@ var WorkspaceSwitcherPopupList = new Lang.Class({
             prevChildBoxY2 = childBox.y2;
             child.allocate(childBox, flags);
         }
-    },
+    }
 });
 
-var WorkspaceSwitcherPopup = new Lang.Class({
-    Name: 'WorkspaceSwitcherPopup',
-    Extends: St.Widget,
-
+var WorkspaceSwitcherPopup = GObject.registerClass(
+class WorkspaceSwitcherPopup extends St.Widget {
     _init() {
-        this.parent({ x: 0,
+        super._init({ x: 0,
                       y: 0,
                       width: global.screen_width,
                       height: global.screen_height,
@@ -119,7 +115,7 @@ var WorkspaceSwitcherPopup = new Lang.Class({
                                                                     this._redisplay.bind(this)));
 
         this.connect('destroy', this._onDestroy.bind(this));
-    },
+    }
 
     _redisplay() {
         let workspaceManager = global.workspace_manager;
@@ -145,7 +141,7 @@ var WorkspaceSwitcherPopup = new Lang.Class({
         let [containerMinWidth, containerNatWidth] = this._container.get_preferred_width(containerNatHeight);
         this._container.x = workArea.x + Math.floor((workArea.width - containerNatWidth) / 2);
         this._container.y = workArea.y + Math.floor((workArea.height - containerNatHeight) / 2);
-    },
+    }
 
     _show() {
         Tweener.addTween(this._container, { opacity: 255,
@@ -153,7 +149,7 @@ var WorkspaceSwitcherPopup = new Lang.Class({
                                             transition: 'easeOutQuad'
                                            });
         this.actor.show();
-    },
+    }
 
     display(direction, activeWorkspaceIndex) {
         this._direction = direction;
@@ -165,7 +161,7 @@ var WorkspaceSwitcherPopup = new Lang.Class({
         this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, this._onTimeout.bind(this));
         GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
         this._show();
-    },
+    }
 
     _onTimeout() {
         Mainloop.source_remove(this._timeoutId);
@@ -177,7 +173,7 @@ var WorkspaceSwitcherPopup = new Lang.Class({
                                             onCompleteScope: this
                                            });
         return GLib.SOURCE_REMOVE;
-    },
+    }
 
     _onDestroy() {
         if (this._timeoutId)
index 386a29fe0c860ef1503f64c959aa49c552ce1e82..f56e549ffe731cd5e252a516335d62e12ba15d40 100644 (file)
@@ -3,7 +3,7 @@
 const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
-const Lang = imports.lang;
+const GObject = imports.gi.GObject;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
@@ -35,23 +35,21 @@ var MUTTER_SCHEMA = 'org.gnome.mutter';
 
 /* A layout manager that requests size only for primary_actor, but then allocates
    all using a fixed layout */
-var PrimaryActorLayout = new Lang.Class({
-    Name: 'PrimaryActorLayout',
-    Extends: Clutter.FixedLayout,
-
+var PrimaryActorLayout = GObject.registerClass(
+class PrimaryActorLayout extends Clutter.FixedLayout {
     _init(primaryActor) {
-        this.parent();
+        super._init();
 
         this.primaryActor = primaryActor;
-    },
+    }
 
     vfunc_get_preferred_width(container, forHeight) {
         return this.primaryActor.get_preferred_width(forHeight);
-    },
+    }
 
     vfunc_get_preferred_height(container, forWidth) {
         return this.primaryActor.get_preferred_height(forWidth);
-    },
+    }
 });
 
 var WindowClone = class {
@@ -608,12 +606,10 @@ var WorkspaceThumbnail = class {
 Signals.addSignalMethods(WorkspaceThumbnail.prototype);
 
 
-var ThumbnailsBox = new Lang.Class({
-    Name: 'ThumbnailsBox',
-    Extends: St.Widget,
-
+var ThumbnailsBox = GObject.registerClass(
+class ThumbnailsBox extends St.Widget {
     _init() {
-        this.parent({ reactive: true,
+        super._init({ reactive: true,
                       style_class: 'workspace-thumbnails',
                       request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
 
@@ -683,7 +679,7 @@ var ThumbnailsBox = new Lang.Class({
         this._nWorkspacesNotifyId = 0;
         this._syncStackingId = 0;
         this._workareasChangedId = 0;
-    },
+    }
 
     _updateSwitcherVisibility() {
         let workspaceManager = global.workspace_manager;
@@ -691,7 +687,7 @@ var ThumbnailsBox = new Lang.Class({
         this.visible =
             this._settings.get_boolean('dynamic-workspaces') ||
                 workspaceManager.n_workspaces > 1;
-    },
+    }
 
     _activateThumbnailAtPoint(stageX, stageY, time) {
         let [r, x, y] = this.transform_stage_point(stageX, stageY);
@@ -704,13 +700,13 @@ var ThumbnailsBox = new Lang.Class({
                 break;
             }
         }
-    },
+    }
 
     _onButtonRelease(actor, event) {
         let [stageX, stageY] = event.get_coords();
         this._activateThumbnailAtPoint(stageX, stageY, event.get_time());
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _onTouchEvent(actor, event) {
         if (event.type() == Clutter.EventType.TOUCH_END &&
@@ -720,7 +716,7 @@ var ThumbnailsBox = new Lang.Class({
         }
 
         return Clutter.EVENT_STOP;
-    },
+    }
 
     _onDragBegin() {
         this._dragCancelled = false;
@@ -728,34 +724,34 @@ var ThumbnailsBox = new Lang.Class({
             dragMotion: this._onDragMotion.bind(this)
         };
         DND.addDragMonitor(this._dragMonitor);
-    },
+    }
 
     _onDragEnd() {
         if (this._dragCancelled)
             return;
 
         this._endDrag();
-    },
+    }
 
     _onDragCancelled() {
         this._dragCancelled = true;
         this._endDrag();
-    },
+    }
 
     _endDrag() {
         this._clearDragPlaceholder();
         DND.removeDragMonitor(this._dragMonitor);
-    },
+    }
 
     _onDragMotion(dragEvent) {
         if (!this.contains(dragEvent.targetActor))
             this._onLeave();
         return DND.DragMotionResult.CONTINUE;
-    },
+    }
 
     _onLeave() {
         this._clearDragPlaceholder();
-    },
+    }
 
     _clearDragPlaceholder() {
         if (this._dropPlaceholderPos == -1)
@@ -763,7 +759,7 @@ var ThumbnailsBox = new Lang.Class({
 
         this._dropPlaceholderPos = -1;
         this.queue_relayout();
-    },
+    }
 
     // Draggable target interface
     handleDragOver(source, actor, x, y, time) {
@@ -818,7 +814,7 @@ var ThumbnailsBox = new Lang.Class({
             return source.realWindow ? DND.DragMotionResult.MOVE_DROP : DND.DragMotionResult.COPY_DROP;
         else
             return DND.DragMotionResult.CONTINUE;
-    },
+    }
 
     acceptDrop(source, actor, x, y, time) {
         if (this._dropWorkspace != -1) {
@@ -865,7 +861,7 @@ var ThumbnailsBox = new Lang.Class({
         } else {
             return false;
         }
-    },
+    }
 
     _createThumbnails() {
         let workspaceManager = global.workspace_manager;
@@ -892,7 +888,7 @@ var ThumbnailsBox = new Lang.Class({
         this.addThumbnails(0, workspaceManager.n_workspaces);
 
         this._updateSwitcherVisibility();
-    },
+    }
 
     _destroyThumbnails() {
         if (this._thumbnails.length == 0)
@@ -917,7 +913,7 @@ var ThumbnailsBox = new Lang.Class({
             this._thumbnails[w].destroy();
         this._thumbnails = [];
         this._porthole = null;
-    },
+    }
 
     _workspacesChanged() {
         let validThumbnails =
@@ -944,7 +940,7 @@ var ThumbnailsBox = new Lang.Class({
         }
 
         this._updateSwitcherVisibility();
-    },
+    }
 
     addThumbnails(start, count) {
         let workspaceManager = global.workspace_manager;
@@ -978,7 +974,7 @@ var ThumbnailsBox = new Lang.Class({
 
         // Clear the splice index, we got the message
         this._spliceIndex = -1;
-    },
+    }
 
     removeThumbnails(start, count) {
         let currentPos = 0;
@@ -997,36 +993,36 @@ var ThumbnailsBox = new Lang.Class({
         }
 
         this._queueUpdateStates();
-    },
+    }
 
     _syncStacking(overview, stackIndices) {
         for (let i = 0; i < this._thumbnails.length; i++)
             this._thumbnails[i].syncStacking(stackIndices);
-    },
+    }
 
     set scale(scale) {
         this._scale = scale;
         this.queue_relayout();
-    },
+    }
 
     get scale() {
         return this._scale;
-    },
+    }
 
     set indicatorY(indicatorY) {
         this._indicatorY = indicatorY;
         this.queue_relayout();
-    },
+    }
 
     get indicatorY() {
         return this._indicatorY;
-    },
+    }
 
     _setThumbnailState(thumbnail, state) {
         this._stateCounts[thumbnail.state]--;
         thumbnail.state = state;
         this._stateCounts[thumbnail.state]++;
-    },
+    }
 
     _iterateStateThumbnails(state, callback) {
         if (this._stateCounts[state] == 0)
@@ -1036,7 +1032,7 @@ var ThumbnailsBox = new Lang.Class({
             if (this._thumbnails[i].state == state)
                 callback.call(this, this._thumbnails[i]);
         }
-    },
+    }
 
     _tweenScale() {
         Tweener.addTween(this,
@@ -1045,7 +1041,7 @@ var ThumbnailsBox = new Lang.Class({
                            transition: 'easeOutQuad',
                            onComplete: this._queueUpdateStates,
                            onCompleteScope: this });
-    },
+    }
 
     _updateStates() {
         this._stateUpdateQueued = false;
@@ -1114,7 +1110,7 @@ var ThumbnailsBox = new Lang.Class({
                                }
                              });
         });
-    },
+    }
 
     _queueUpdateStates() {
         if (this._stateUpdateQueued)
@@ -1124,7 +1120,7 @@ var ThumbnailsBox = new Lang.Class({
                        this._updateStates.bind(this));
 
         this._stateUpdateQueued = true;
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         // Note that for getPreferredWidth/Height we cheat a bit and skip propagating
@@ -1144,7 +1140,7 @@ var ThumbnailsBox = new Lang.Class({
         let naturalHeight = totalSpacing + nWorkspaces * this._porthole.height * MAX_THUMBNAIL_SCALE;
 
         return themeNode.adjust_preferred_height(totalSpacing, naturalHeight);
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         if (!this._ensurePorthole())
@@ -1167,7 +1163,7 @@ var ThumbnailsBox = new Lang.Class({
         let width = Math.round(this._porthole.width * scale);
 
         return themeNode.adjust_preferred_width(width, width);
-    },
+    }
 
     // The "porthole" is the portion of the screen that we show in the
     // workspaces
@@ -1179,7 +1175,7 @@ var ThumbnailsBox = new Lang.Class({
             this._porthole = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
 
         return true;
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -1321,7 +1317,7 @@ var ThumbnailsBox = new Lang.Class({
         childBox.y1 = indicatorY1 - indicatorTopFullBorder;
         childBox.y2 = (indicatorY2 ? indicatorY2 : (indicatorY1 + thumbnailHeight)) + indicatorBottomFullBorder;
         this._indicator.allocate(childBox, flags);
-    },
+    }
 
     _activeWorkspaceChanged(wm, from, to, direction) {
         let thumbnail;
index 228c3f81b4675945ea48aee91a0125127bd3fb44..a06ab32a8bbeff63a6ebcfa726b8a17cca86e014 100644 (file)
@@ -3,7 +3,6 @@
 const Clutter = imports.gi.Clutter;
 const Gio = imports.gi.Gio;
 const GObject = imports.gi.GObject;
-const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
@@ -403,13 +402,11 @@ var ExtraWorkspaceView = class extends WorkspacesViewBase {
     }
 };
 
-var DelegateFocusNavigator = new Lang.Class({
-    Name: 'DelegateFocusNavigator',
-    Extends: St.Widget,
-
+var DelegateFocusNavigator = GObject.registerClass(
+class DelegateFocusNavigator extends St.Widget {
     vfunc_navigate_focus(from, direction) {
         return this._delegate.navigateFocus(from, direction);
-    },
+    }
 });
 
 var WorkspacesDisplay = class {
index aa063191563b5e9f5bb348f0603023a575625397..9b264d05f49dbf027d8c117a0b197af7bade66fc 100644 (file)
@@ -3,8 +3,8 @@
 const UI = imports.testcommon.ui;
 
 const Clutter = imports.gi.Clutter;
+const GObject = imports.gi.GObject;
 const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
 const Shell = imports.gi.Shell;
 const St = imports.gi.St;
 
@@ -32,19 +32,17 @@ const BOX_WIDTHS = [
 
 const SPACING = 10;
 
-var FlowedBoxes = new Lang.Class({
-    Name: 'FlowedBoxes',
-    Extends: St.Widget,
-
+var FlowedBoxes = GObject.registerClass(
+class FlowedBoxes extends St.Widget {
     _init() {
-        this.parent();
+        super._init();
 
        for (let i = 0; i < BOX_WIDTHS.length; i++) {
            let child = new St.Bin({ width: BOX_WIDTHS[i], height: BOX_HEIGHT,
                                     style: 'border: 1px solid #444444; background: #00aa44' })
            this.add_actor(child);
        }
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         let children = this.get_children();
@@ -62,7 +60,7 @@ var FlowedBoxes = new Lang.Class({
        }
 
         return [maxMinWidth, totalNaturalWidth];
-    },
+    }
 
     _layoutChildren(forWidth, callback) {
         let children = this.get_children();
@@ -92,7 +90,7 @@ var FlowedBoxes = new Lang.Class({
            x = x2;
        }
 
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
        let height = 0;
@@ -102,7 +100,7 @@ var FlowedBoxes = new Lang.Class({
           });
 
         return [height, height];
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -124,12 +122,10 @@ var FlowedBoxes = new Lang.Class({
 //
 // This is currently only written for the case where the child is height-for-width
 
-var SizingIllustrator = new Lang.Class({
-    Name: 'SizingIllustrator',
-    Extends: St.Widget,
-
+var SizingIllustrator = GObject.registerClass(
+class SizingIllustrator extends St.Widget {
     _init() {
-        this.parent();
+        super._init();
 
        this.minWidthLine = new St.Bin({ style: 'background: red' });
         this.add_actor(this.minWidthLine);
@@ -157,13 +153,13 @@ var SizingIllustrator = new Lang.Class({
 
        this.width = 300;
        this.height = 300;
-    },
+    }
 
     add(child) {
         this.child = child;
         this.add_child(child);
         this.child.lower_bottom();
-    },
+    }
 
     vfunc_get_preferred_width(forHeight) {
         let children = this.get_children();
@@ -177,7 +173,7 @@ var SizingIllustrator = new Lang.Class({
        }
 
         return [0, 400];
-    },
+    }
 
     vfunc_get_preferred_height(forWidth) {
         let children = this.get_children();
@@ -191,7 +187,7 @@ var SizingIllustrator = new Lang.Class({
        }
 
         return [0, 400];
-    },
+    }
 
     vfunc_allocate(box, flags) {
         this.set_allocation(box, flags);
@@ -214,7 +210,7 @@ var SizingIllustrator = new Lang.Class({
        alloc(this.naturalHeightLine, 0, this.naturalHeight, allocWidth, this.naturalHeight + 1);
        alloc(this.currentHeightLine, 0, this.height, allocWidth, this.height + 1);
        alloc(this.handle, this.width, this.height, this.width + 10, this.height + 10);
-    },
+    }
 
     _handlePressed(handle, event) {
        if (event.get_button() == 1) {
@@ -225,14 +221,14 @@ var SizingIllustrator = new Lang.Class({
            this._dragY = y - handleY;
            Clutter.grab_pointer(handle);
        }
-    },
+    }
 
     _handleReleased(handle, event) {
        if (event.get_button() == 1) {
            this._inDrag = false;
            Clutter.ungrab_pointer(handle);
        }
-    },
+    }
 
     _handleMotion(handle, event) {
        if (this._inDrag) {